查表法实现UNICODE转GB2312

这几天在写个程序需要在arm7做的平台上既显示UNICODE字符也要显示GB2313字符,查阅很多网站都没有找到UNICODE和GB2312的对应关系,唯一的办法就是做成对应的表。经过不懈的查找,终于在CSDN上找到一个源码,里面有个UNICODE和GB2312的对应表,该表囊括了7445个字符,这个对我实在是太有用了。

但是UNICODE中有不少字符是GB2312中没有的,显然,这将导致UNICODE码在表中出现不连续的现象,所以由这种对应关系去将UNICODE转为GB2312,势必每个UNICODE码都要去进行查询,这样将可能导致程序速度变慢,实时性变差。因此,可以想到做成查表方式,即以UNICODE作为数组下标,GB2312作为数组元素。对于无法与GB2312对应的UNICODE,可以用0×0020代替。如此,做成的表文件大概130k大小,虽然占用了一些空间但是换取了更快的速度。

下面是一段制作表的小程序,Unicode_GB2312数组较大不便在此列出。

int main(void)

{

unsigned short int zz[65536];

unsigned long int i,k;

FILE *fp;

for(i = 0;i < 32;i++)

{

zz[i] = 0×0020;

}

for(i = 32;i < 127;i++)

{

zz[i] = i;

}

for(i = 127;i < 65536;i++)

{

for(k = 0;k < 7445;k++)

{

if(i == Unicode_GB2312[k][0])

{

zz[i] = Unicode_GB2312[k][1];

break;

}

else

{

zz[i] = 0×0020;

}

}

}

fp = fopen(“unicode2gb2312.txt”,”wt”);

for(i= 0;i<65536;i++)

{

fprintf(fp,”%s%04x%c\n”,”0x”,zz[i],’,');

}

fclose(fp);

return 1;

}

菊子曰 用菊子曰写博客,就是爽!

Incoming search terms:

  • GB2312
  • unicode转GB2312表
  • unicodeתgb2312
  • *unicode转gb2312数组
  • 查表法实现UNICODE转GB2312
  • 查表法 gb2312 转换为 Unicode
  • Unicode_GB2312
  • unicode2gb2312 txt
  • unicode-gb2312
  • unicode תGB

One thought on “查表法实现UNICODE转GB2312

  1. Pingback: 查表法实现UNICODE转GB2312 | post space

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>