嵌入式设备中Unicode编码字符串的存储方法

文档序号:6373873阅读:573来源:国知局
专利名称:嵌入式设备中Unicode编码字符串的存储方法
技术领域
本发明涉及一种嵌入式设备中Unicode编码字符串的存储方法,属于计算机数据存储领域。
背景技术
随着计算机存储领域技术的发展,在嵌入式设备中,Unicode编码的应用越来越广泛。Unicode是一种字符编码方案,由国际组织设计,可以容纳全世界所有语言文字的编码方案。通常Unicode的实现方式为UTF-16编码。UTF的全称是Unicode Tra nsformationFormat,即Unicode转换格式。UTF-16将每个字符编码为两个字节,这就在节省空间和简化编码方面两个目标之间,提供了一个很好的折衷,得到了广泛的应用。在嵌入式软件开发环境中,一般使用多字节字符串,即ANSI编码。不同的国家和地区制定了不同的标准,由此产生了 GB2312,BIG5, JIS等各自的编码标准。这些使用2个字节来代表一个字符的各种汉字延伸编码方式,称为ANSI编码。在简体中文系统下,ANSI编码代表GB2312编码,在日文操作系统下,ANSI编码代表JIS编码。不同ANSI编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段ANSI编码的文本中。目前在在嵌入式设备中,以Unicode编码的字符串通常是直接存储,当使用以Unicode编码的字符串时,采用以下2种方式进行Unicode与ANSI编码字符串的转换①在 Win32 环境下使用 MultibyteToWideChar 和 WideCharToMultiByte 函数进行 Unicode与ANSI编码字符串的转换;在Linux环境下,使用iconv函数进行Unicode与ANSI编码字符串的转换。②使用用户自定义的转换表,手动实现字符编码之间的转换。直接存储以Unicode编码的字符串存在以下缺点(I)在非WindoWS、Linux或其它高级操作系统编程环境下的嵌入式设备中,第①种Unicode与ANSI编码的转换方法无法使用。(2)在对代码空间要求较高的嵌入式设备环境中,第②种Unicode与ANSI编码的转换方法方法需占用数百K字节的内存空间,这对于一些对空间要求较高的嵌入式系统来说是一笔巨大的开销。

发明内容
本发明的目的是克服已有Unicode编码字符串的存储及使用过程中存在的不足,提出一种嵌入式设备中Unicode编码字符串的存储方法。本发明的目的是通过以下技术方案实现的。一种嵌入式设备中Unicode编码字符串的存储方法,其具体操作步骤为第①步依次将Unicode编码字符串中的每个Unicode字符用16进制数表示。一个Unicode字符包含2个字节。然后对用16进制数表示的每个Unicode字符进行第②步至第③步的操作。第②步对一个Unicode字符中每个字节的高4位和低4位分别转换成相应ASCII码表示。第③步合并转换的结果,即将一个Unicode字符转换为4个ASCII编码的字符,并对由4个ASCII编码表示的转换结果进行存储。经过上述步骤的操作,即可将一个Unicode编码字符串转换为ASCII编码形式并进行存储,此时嵌入式系统可直接使用此种编码形式的字符串。有益效果本发明提出的方法与目前已有的技术比较具有以下优点①本发明方法不需要特定的操作系统编程环境。②节约空间。本发明方法不需要占用空间巨大的转换表,节约了程序的空间。③本发明提出的存储方法,可以很方便的实现ASCII字符串到Unicode字符串的 逆转换,得到原始Unicode字符串。
具体实施例方式下面结合具体实施例对本发明内容做进一步说明。实施例I :对FAT32文件系统的一个以Unicode编码的长文件名“一种嵌入式设备中Unicode编码字符串的存储方法.doc”进行存储,其具体操作步骤为第①步依次将该Unicode编码字符串中的每个Unicode字符用16进制数表示“00 4E CD 79 4C 5D 65 51 OF 5F BE 8B 07 59 2D 4E 55 00 6E 00 69 00 6300 6F 0064 00 65 00 16 7F 01 78 57 5B 26 7B 32 4E 84 76 58 5B A8 50 B9 65 D56C 2E 0064 00 6F 00 63 00”。然后对用16进制数表示的每个Unicode字符进行第②步至第③步的操作。第②步对一个Unicode字符中每个字节的高4位和低4位分别转换成相应ASCII码表示。具体为如果待处理字节的4位二进制码位于O到9区间,使其加上0x30,否则加上0x37。这样对于4位二进制码O 9、A F就映射到ASCII码的0x30到0x39或者0x61到0x66之间。第③步合并转换的结果,即将一个Unicode字符转换为4个ASCII编码的字符,并对由4个ASCII编码表示的转换结果进行存储。经过上述步骤的操作,即可将一个Unicode编码字符串转换为ASCII编码形式“004ECD794C5D65510F5FBE8B7592D4E55006E00690063006F0064006500167F0178575B267B324E8476585BA850B965D56C2E0064006F006300,>,并对其进行存储,此时嵌入式系统可直接使用此种编码形式的字符串。恢复Unicode的具体操作步骤为第I 步 J^ASCII 码字符串“004ECD794Cro65510F5FBE8B7592D4E55006E00690063006F0064006500167F0178575B267B324E8476585BA850B965D56C2E0064006F006300” 中的每个字符分配4位空间,此字符串共116个ASCII字符,即共需58个字节的空间,对应29个Unicode 字符。第2步对每个ASCII码字符进行转换,过程如下如果待处理ASCII字符位于字符O到字符9区间,使其减去0x30 ;否则减去0x37。这样对于ASCII码的0x30到0x39、0x61到0x66区间就映射到4位二进制码O到F。比如对于此字符串的前四个ASCII字符“004E”,16进制表示为0x30,0x30,0x34,0x45,就转换为16进制0x004E,即Unicode中的汉字“一,,。第3步将转换完成的字符串合并到一起进行存储。全部转换完成后,ASCII编码字符串 “004ECD794C5D65510F5FBE8B7592D4E55006E00690063006F0064006500167F0178575B267B324E8476585BA850B965D56C2E0064006F006300”存储为原 Unicode 字符串“一种嵌入式设备中Unicode编码字符串的存储方法.doc”。实施例2 对NTFS文件系统的一个以Unicode编码的文件名“Windows编程视频教程I”进行存储,其具体操作步骤为第①步依次将该Unicode编码字符串中的每个Unicode字符用16进制数表示 “57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 16 7F OB 7A C6 89 91 98 59 650B 7A31 00”。然后对用16进制数表示的每个Unicode字符进行第②步至第③步的操作。第②步对一个Unicode字符中每个字节的高4位和低4位分别转换成相应ASCII码表示。具体为如果待处理字节的4位二进制码位于O到9区间,使其加上0x30,否则加上0x37。这样对于4位二进制码O 9、A F就映射到ASCII码的0x30到0x39或者0x61到0x66之间。第③步合并转换的结果,即将一个Unicode字符转换为4个ASCII编码的字符,并对由4个ASCII编码表示的转换结果进行存储。经过上述步骤的操作,即可将一个Unicode编码字符串转换为ASCII编码形式“570069006E0064006F0077007300167F0B7AC689919859650B7A3100”,并对其进行存储,此
时嵌入式系统可直接使用此种编码形式的字符串。本发明不仅限于以上实施例,凡是利用本发明的设计思路,做一些简单变化的设计,都应计入本发明的保护范围之内。
权利要求
1.一种嵌入式设备中Unicode编码字符串的存储方法,其特征在于其具体操作步骤为第①步依次将Unicode编码字符串中的每个Unicode字符用16进制数表示;一个Unicode字符包含2个字节;然后对用16进制数表示的每个Unicode字符进行第②步至第③步的操作; 第②步对一个Unicode字符中每个字节的高4位和低4位分别转换成相应ASCII码表不; 第③步合并转换的结果,即将一个Unicode字符转换为4个ASCII编码的字符,并对由4个ASCII编码表示的转换结果进行存储; 经过上述步骤的操作,即可将一个Unicode编码字符串转换为ASCII编码形式并进行存储,此时嵌入式系统可直接使用此种编码形式的字符串。
全文摘要
本发明提出的一种嵌入式设备中Unicode编码字符串的存储方法,具体为①依次将Unicode编码字符串中的每个Unicode字符用16进制数表示;然后对用16进制数表示的每个Unicode字符进行第②步至第③步的操作。②对一个Unicode字符中每个字节的高4位和低4位分别转换成相应ASCII码表示。③合并转换的结果,即将一个Unicode字符转换为4个ASCII编码的字符,并对由4个ASCII编码表示的转换结果进行存储。本发明提出的方法具有以下优点①不需要特定的操作系统编程环境。②节约空间。③可以很方便的实现ASCII字符串到Unicode字符串的逆转换,得到原始Unicode字符串。
文档编号G06F17/22GK102760119SQ20121024029
公开日2012年10月31日 申请日期2012年7月11日 优先权日2012年7月11日
发明者张全新, 张翔, 张雪兰, 李元章, 王文明, 谭毓安, 马忠梅 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1