iconv实现编码转换与中文点阵字库HZK16
嵌入式开发中中文的识别、显示一直是一个比较让人头疼的问题,这是由于嵌入式系统的精简要求所导致的。我在前一个项目中用Qt做终端的显示界面时,就被中文字符的显示搞得焦头烂额,最后还是在网上下了一个文泉驿的中文字体库才解决问题,不过并不令人满意,主要是字体库太大了,影响了性能。今天在项目中又遇到了中文字符的编码转换和显示问题,趁机学习总结一下。 中文编码与点阵字库 国际标准有UTF-8、UTF-16等,国家标准有GB2312、GB18030、GBK等,至于这些标准的编码实现就不在这里介绍了。编码标准实现中文字符在计算机内部的机器表示,但是怎么将这些内部表示在显示设备上显示出来,则不是编码标准的范畴了,这就需要中文字库的作用。中文字库包含已经做好的显示“模板”(字模),通过中文的编码值来映射汉字在字库中的字模索引,从而使用字模来实现中文显示。 但是大部分的中文字库都是映射国家标准的,如GB2312的HZK16点阵字库。不知道文泉驿字体库是否是直接映射UTF-8,还是也是GB2312。因此,当在程序中涉及两种不同的中文编码方式时,就需要进行编码方式的转换,今天我遇到的就是要实现中文字符UTF-8到GB2312的编码转换。 HZK16是符合GB2312标准16*16的点阵宋体字库,支持的汉字有6763个,符号682个。其中一级汉字有 3755个,按声序排列,二级汉字有3008个,按偏旁部首排列