CN101404007A - 一种Unicode编码到GB2312编码转换方法 - Google Patents
一种Unicode编码到GB2312编码转换方法 Download PDFInfo
- Publication number
- CN101404007A CN101404007A CNA2008102029691A CN200810202969A CN101404007A CN 101404007 A CN101404007 A CN 101404007A CN A2008102029691 A CNA2008102029691 A CN A2008102029691A CN 200810202969 A CN200810202969 A CN 200810202969A CN 101404007 A CN101404007 A CN 101404007A
- Authority
- CN
- China
- Prior art keywords
- unicode
- character
- code
- coding
- interval
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种Unicode编码到GB2312编码转换方法,其特征在于包括以下步骤:步骤1:读取存储在嵌入式电子设备的第一存储设备中的一字符的Unicode编码;步骤2:将所述字符的Unicode编码右移8位,获取该Unicode编码的高8位数据;步骤3:以步骤2的高8位数据为下标,在区间定位表中获取偏移量;步骤4:使用所述字符的Unicode编码值减去步骤3所得的偏移量,得到差值;步骤5:以步骤4所得差值为下标,在编码转换表中获取该字符的GB2312编码,存储在嵌入式电子设备的第二存储设备中。本发明可以有效的减少存储空间的使用,提高效率。
Description
技术领域
本发明涉及编码转换,特别是一种Unicode编码到GB2312编码转换方法,主要适用于对存储空间要求比较严格的便携式电子产品的字符处理。
背景技术
GB2312码是我国公布的简体汉字编码方案,也称国标码,国标码对6763个汉字集进行了编码,涵盖了大多数正在使用的汉字。Unicode码是一种国际标准编码,采用二个字节编码,目前在网络、Windows系统和很多大型软件中得到应用。目前这两种编码在通信系统中都有比较广泛的应用。
汉字的UniCode编码基本上是从0x4E00到0x9FBB连续排列,汉字基本出现在这个编码范围中。汉字的GB2312区位编码表,共包含682个符号(第01-09区)、6763个汉字(第16-87区),其中第01-09区为国标符号,第10-15区为空区。对于位于第16-87区个汉字,其GB2312编码位于B0A1--F7FE之间,其对应的Unicode编码值位于对于0x4E00到0x9FBB之间;第01-09区的GB3212编码值在A1A1--A9FE之间的国际符号,其对应的Unicode编码值在0x0000--0xFFFF之间分布比较散乱,没有固定的规律。
一般Unicode到GB2312的转换方法常用的有两种:第一种是针对Unicode编码值在0x0000--0xFFFF之间建立一个大的转换数组,这样比较浪费存储空间;第二种是针对Unicode编码值在0x4E00到0x9FBB之间建立一个大的数组,针对在这个范围之外的常用符号单独建立一个数组,来进行查找转换,这样做比较节约空间,但是逐个符号查找的效率非常低。
发明内容
为克服上述已有技术的不足,本发明要解决的技术问题是提供一种Unicode编码到GB2312编码转换方法,符合嵌入式电子设备对存储空间要求比较严格的需求。
为解决上述技术问题,本发明的技术方案是:
一种Unicode编码到GB2312编码转换方法,包括以下步骤:
步骤1:读取存储在嵌入式电子设备的第一存储设备中的一字符的Unicode编码;
步骤2:将所述字符的Unicode编码右移8位,获取该Unicode编码的高8位数据;
步骤3:以步骤2的高8位数据为下标,在区间定位表中获取偏移量;
步骤4:使用所述字符的Unicode编码值减去步骤3所得的偏移量,得到差值;
步骤5:以步骤4所得差值为下标,在编码转换表中获取该字符的GB2312编码,存储在嵌入式电子设备的第二存储设备中。
步骤1所述的第一存储设备是ROM。
步骤5所述的第二存储设备是RAM。
所述的Unicode编码到GB2312的编码转换表通过国际符号、中文字符、无效字符三部分分成8个区间组合来实现,其中国际符号为6个区间,中文字符为1个区间,无效字符为1个区间。
Unicode编码的区间定位表采用国际符号、中文字符、无效字符的定位偏移量来组成。
与现有技术相比,本发明的有益效果是:
本发明接口简单可靠,实现非常方便,对于手机等嵌入式电子设备具有较强通用性和实用性,可以有效的减少存储空间的使用,提高效率。
附图说明
图1是本发明方法的流程图。
具体实施方式
下面结合附图和实施例对本发明的具体实施方式做进一步详细的说明,但不应以此限制本发明的保护范围。
Unicode编码到GB2312的编码转换表由UniCodeToGBTable数组实现,UniCodeToGBTable是一个有0x6B00个元素的数组,每个元素为2个字节;数组的创建根据国际符号的Unicode分布区间大体为0x0000-0x04FF,0x2000--0x26FF,0x3000--0x32FF,0xE000--0xE2FF,0xE500--0xE8FF,0xFE00--0xFFFF共6个区间,中文字符的Unicode分布区间在0x4E00--0x9FFF,无效字符的区间用0x0500--0x05FF来代表实现,总共8个区间。按照Unicode编码值的顺序将上面8个区间的值对应的GB2312编码连接起来创建UniCodeToGBTable数组。
对于Unicode编码在0x0000-0x04FF,0x2000--0x26FF,0x3000--0x32FF,0x4E00--0x9FFF,0xE000--0xE2FF,0xE500--0xE8FF,0xFE00--0xFFFF共7个区间中的符号,数组元素的GB2312编码值对应的Unicode编码值相对于数组下标分别偏移了0x0000,0x1A00,0x2300,0x3E00,0x7E00,0x8000,0x9500,相对于背景技术的第一种转换方法使用一个完整的Unicode编码到GB2312编码的转换数组节约了0x9500*2=74.5K字节的空间。
UniCodeToGBTable数组的元素为表1中第2列的Unicode编码值对应的GB2312编码。表1是UniCodeToGBTable数组的下标、元素以及偏移值对照图。
表1
元素下标(十六进制) | 对应的Unicode编码值(十六进制) | 偏移值(十六进制) |
0x0000-0x04FF | 0x0000-0x04FF | 0x0000 |
0x0500-0x05FF | 无效值 | |
0x0600--0x0CFF | 0x2000--0x26FF | 0x1A00 |
0x0D00--0x0FFF | 0x3000--0x32FF | 0x2300 |
0x1000--0x61FF | 0x4E00--0x9FFF | 0x3E00 |
0x6200--0x64FF | 0xE000--0xE2FF | 0x7E00 |
0x6500--0x68FF | 0xE500--0xE8FF | 0x8000 |
0x6900--0x6AFF | 0xFE00--0xFFFF | 0x9500 |
UniCodeToGBTable数组包含了6763个汉字、国际符号、无效字符三种情况的Unicode编码到GB2312编码的转换数据,我们可以通过创建一个Unicode编码字符在UniCodeToGBTable数组中对应的GB2312编码的位置的定位数组来实现对一个字符的编码转换。
Unicode编码到GB2312的编码转换表通过国际符号、中文字符、无效字符三部分分成8个区间组合来实现,其中国际符号为6个区间,中文字符为1个区间,无效字符为1个区间。Unicode编码的区间定位表采用国际符号、中文字符、无效字符的定位偏移量来组成。
国际符号的Unicode编码定位分为6个不连续区间来实现,6个区间通过不同的偏移量来实现,不同的偏移量对应编码转换表中不同的区间。
无效字符的Unicode编码定位分为6个不连续区间来实现,6个区间通过不同的偏移量来实现,所有无效字符对应的GB2312编码位置相同;所有无效字符对应的GB2312编码位置相同,是无效字符编码区间。
通过Unicode编码的区间定位表获取字符Unicode编码对应的不同偏移量,在Unicode编码到GB2312的编码转换表的不同区间获取字符对应的GB2312编码;
Unicode编码的区间定位表由uniToGBPosition数组实现。Unicode编码数据按0xFF个数据分为一组,总计0x0000--0xFFFF个Unicode编码数据可以分为0xFF组,某个字符高八位数据就对应着Unicode编码的分组,例如Unicode编码0x4E98就位于0x4E分组。uniToGBPosition包含256个元素,每个元素值就是对应分组的偏移值,如果一个Unicode编码对应的分组的偏移值为0x0100*(n-5),那么这个Unicode编码转换后的GB2312编码在UniCodeToGBTable数组中的位置下标就是0x0500--0x05FF之间,就是无效符号,从表2的第2列可以得出这样的分组共有0x96个,这样编码转换数组相对于第一种转换方法节约了0x9500*2个字节的空间。表2是uniToGBPosition数组的标和值的元素值的对应图,n为下标。
表2
元素下标(十六进制) | 元素值(十六进制) |
0x00-0x04 | 0x0000 |
0x5--0x1F | 0x0100*(n-5) |
0x20--0x26 | 0x1A00 |
0x27--0x2F | 0x0100*(n-5) |
0x30--0x32 | 0x2300 |
0x33--0x4D | 0x0100*(n-5) |
0x4E--0x9F | 0x3E00 |
0xA0--0xDF | 0x0100*(n-5) |
0xE0--0xE2 | 0x7E00 |
0xE3--0xE4 | 0x0100*(n-5) |
0xE5--0xE8 | 0x8000 |
0xE9--0xFD | 0x0100*(n-5) |
0xFE--0xFF | 0x9500 |
从UniCodeToGBTable数组和uniToGBPosition数组的创建原理可以得出编码转换公式,假设一个符号的Unicode编码值为source(2个字节),其转换为GB2312后的编码值为dest(2个字节)。那么用C语言表示的公式为:
dest=UniCodeToGBTable[source-uniToGBPosition[source>>8]]。
请参阅图1。本发明Unicode编码到GB2312编码转换方法的步骤如下:
步骤1:读取存储在嵌入式电子设备ROM中字符的Unicode编码;
步骤2:将该字符的Unicode编码右移8位,获取Unicode编码的高8位数据;
步骤3:以步骤2的高8位数据为下标,获取uniToGBPosition数组的元素值,即偏移量;
步骤4:使用字符的Unicode编码值减去步骤3所得的偏移量,得到差值;
步骤5:以步骤4所的差值为下标,在UniCodeToGBTable数组中获取到对应的元素值,存储在嵌入式电子设备RAM中;
步骤5所得的元素值就是该字符的GB2312编码,可以用来进行字符显示或者数据传输等。
一个简单的例子如下:
2、对Unicode码右移8位,得到结果为0xFE,十进制为254;
3、计算偏移量uniToGBPosition[254]=0x9500;
4、计算差值0xFE3E-0x9500=0x693E;
5、计算UniCodeToGBTable[0x693E]=0xA6E7,存储在RAM中;
本发明提出了一种简单可靠且效率较高的Unicode编码到GB2312编码的转换方案。使用了8个Unicode编码区间的组合方式来减小UniCodeToGBTable存储空间,使用13个编码区间的偏移量和其他无效字符编码区间的偏移量来组成uniToGBPosition数组。通过数组uniToGBPosition定位字符Unicode编码的偏移量,根据此偏移量在数组UniCodeToGBTable中定位字符的GB2312编码。
以上所述仅为本发明的较佳实施例而已,并非用来限定本发明的实施范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应为本发明的技术范畴。
Claims (5)
1、一种Unicode编码到GB2312编码转换方法,其特征在于包括以下步骤:
步骤1:读取存储在嵌入式电子设备的第一存储设备中的一字符的Unicode编码;
步骤2:将所述字符的Unicode编码右移8位,获取该Unicode编码的高8位数据;
步骤3:以步骤2的高8位数据为下标,在区间定位表中获取偏移量;
步骤4:使用所述字符的Unicode编码值减去步骤3所得的偏移量,得到差值;
步骤5:以步骤4所得差值为下标,在编码转换表中获取该字符的GB2312编码,存储在嵌入式电子设备的第二存储设备中。
2、根据权利要求1所述的转换方法,其特征在于步骤1所述的第一存储设备是ROM。
3、根据权利要求1所述的转换方法,其特征在于步骤5所述的第二存储设备是RAM。
4、根据权利要求1至3中任一权利要求所述的转换方法,其特征在于所述的Unicode编码到GB2312的编码转换表通过国际符号、中文字符、无效字符三部分分成8个区间组合来实现,其中国际符号为6个区间,中文字符为1个区间,无效字符为1个区间。
5、根据权利要求1至3中任一权利要求所述的转换方法,其特征在于Unicode编码的区间定位表采用国际符号、中文字符、无效字符的定位偏移量来组成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102029691A CN101404007A (zh) | 2008-11-19 | 2008-11-19 | 一种Unicode编码到GB2312编码转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102029691A CN101404007A (zh) | 2008-11-19 | 2008-11-19 | 一种Unicode编码到GB2312编码转换方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101404007A true CN101404007A (zh) | 2009-04-08 |
Family
ID=40538028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008102029691A Pending CN101404007A (zh) | 2008-11-19 | 2008-11-19 | 一种Unicode编码到GB2312编码转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101404007A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101969498A (zh) * | 2010-08-31 | 2011-02-09 | 浙江大学 | 盲文短信打印装置 |
CN102541822A (zh) * | 2010-12-21 | 2012-07-04 | 航天信息股份有限公司 | 通信过程中汉字的处理方法和装置 |
CN102609510A (zh) * | 2012-02-06 | 2012-07-25 | 中国农业银行股份有限公司 | 一种中文姓名数据处理方法和装置 |
CN103914436A (zh) * | 2013-01-09 | 2014-07-09 | 国际商业机器公司 | 提供较小目标编码空间的码转换方法、计算机装置和程序产品 |
US9684654B2 (en) | 2012-03-30 | 2017-06-20 | International Business Machines Corporation | Performing a code conversion in a smaller target encoding space |
CN109829328A (zh) * | 2018-12-19 | 2019-05-31 | 上海晶赞融宣科技有限公司 | 数据脱敏、逆脱敏方法及装置、存储介质、终端 |
CN111428441A (zh) * | 2020-03-18 | 2020-07-17 | 中国电子科技集团公司第二十八研究所 | 面向信息系统跨平台应用的汉字编码转换方法及设备 |
CN113473467A (zh) * | 2021-08-03 | 2021-10-01 | 深圳市火火兔智慧科技有限公司 | Iot设备配网方法、装置、计算机设备及存储介质 |
-
2008
- 2008-11-19 CN CNA2008102029691A patent/CN101404007A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101969498A (zh) * | 2010-08-31 | 2011-02-09 | 浙江大学 | 盲文短信打印装置 |
CN102541822A (zh) * | 2010-12-21 | 2012-07-04 | 航天信息股份有限公司 | 通信过程中汉字的处理方法和装置 |
CN102541822B (zh) * | 2010-12-21 | 2014-07-02 | 航天信息股份有限公司 | 通信过程中汉字的处理方法和装置 |
CN102609510A (zh) * | 2012-02-06 | 2012-07-25 | 中国农业银行股份有限公司 | 一种中文姓名数据处理方法和装置 |
CN102609510B (zh) * | 2012-02-06 | 2014-05-28 | 中国农业银行股份有限公司 | 一种中文姓名数据处理方法和装置 |
US9684654B2 (en) | 2012-03-30 | 2017-06-20 | International Business Machines Corporation | Performing a code conversion in a smaller target encoding space |
US10545924B2 (en) | 2012-03-30 | 2020-01-28 | International Business Machines Corporation | Performing a code conversion in a smaller target encoding space |
US11675744B2 (en) | 2012-03-30 | 2023-06-13 | International Business Machines Corporation | Performing a code conversion in a smaller target encoding space |
CN103914436A (zh) * | 2013-01-09 | 2014-07-09 | 国际商业机器公司 | 提供较小目标编码空间的码转换方法、计算机装置和程序产品 |
CN109829328A (zh) * | 2018-12-19 | 2019-05-31 | 上海晶赞融宣科技有限公司 | 数据脱敏、逆脱敏方法及装置、存储介质、终端 |
CN111428441A (zh) * | 2020-03-18 | 2020-07-17 | 中国电子科技集团公司第二十八研究所 | 面向信息系统跨平台应用的汉字编码转换方法及设备 |
CN111428441B (zh) * | 2020-03-18 | 2024-01-19 | 中国电子科技集团公司第二十八研究所 | 面向信息系统跨平台应用的汉字编码转换方法及设备 |
CN113473467A (zh) * | 2021-08-03 | 2021-10-01 | 深圳市火火兔智慧科技有限公司 | Iot设备配网方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101404007A (zh) | 一种Unicode编码到GB2312编码转换方法 | |
Gill et al. | China's expanding role in peacekeeping: Prospects and policy implications | |
CN102592160B (zh) | 一种面向短信的字符二维码编码方法和解码方法 | |
WO2006133407A3 (en) | Data compression using a stream selector with edit-in-place capability for compressed data | |
CN105634499A (zh) | 一种基于新短浮点型数据的数据转换方法 | |
CN102999773B (zh) | 一种彩色格点码图及其三维条码编码方法 | |
CN105450232A (zh) | 编码、解码方法以及编码装置和解码装置 | |
CN104102690B (zh) | 一种基于存储结构的遥测数据处理方法 | |
CN102750337A (zh) | 字库的制作方法和装置 | |
CN101483779A (zh) | 一种二维矢量地图的压缩方法 | |
CN103869964A (zh) | 一种二维码中文字符输入计算机的设备 | |
Hindrichs et al. | Plusminus 20/40 latitude: sustainable building design in tropical and subtropical regions | |
CN101345952A (zh) | 客户身份识别卡的数据存储、读取方法、装置及系统 | |
CN101382931A (zh) | 一种用于电子、信息及通信系统的交换内码及其应用 | |
CN105046306A (zh) | 一种包含多种生物特征信息的彩色多维码编码方法 | |
CN102063416A (zh) | 向pdf文件内嵌双字节字体的方法及其系统 | |
CN101777283A (zh) | 城乡地址数字化地图及门牌和公交车站牌 | |
CN101510375B (zh) | 电子地图数据文件的处理方法 | |
CN107463355B (zh) | 立即数压缩编码方法和系统 | |
CN203397399U (zh) | 一种指纹考勤仪 | |
CN101324880A (zh) | 一种文字编码的转换方法及转换系统 | |
WO2001093180A8 (fr) | Procede de saisie de codes operationnels par numerisation des informations concernant les differents alphabets ou symboles graphiques et systeme connexe de traitement desdites informations | |
CN102664634A (zh) | 一种用于北斗收发汉字文本消息时的数据压缩方法 | |
CN1416043A (zh) | 一种计算机汉字输入方法 | |
Byrohl | Understanding Lyman-alpha observations with IllustrisTNG |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090408 |