众所周知,GB2312与UNICODE互转,需要查“表”转换,那么关键就是怎么制作这个“表”了。
UNICODE码从0X4E00开始,到0X9FA0就可以了,另外还有几个,不那么常用,就可以不用添加了,可以先把这些打到一个文件里,并存储为数组形式,
unsigned short uniChar[] = {0X4E00.....0X9FA0};
然后把这个文件改成.h的,包含到工程里来,定义一个结构体,
typedef struct tg_Char
{
unsigned short uni;
unsigned short gb;
}TGCHAR;
然后利用前面打印好的数组,做一个以unicode码排序的结构体数组,代码如下:
int length = sizeof(uniChar)/2;
freopen("TGCHAR unicode_order.h","w+",stdout);
printf("unicode_order[] = {\n");
for (int i = 0;i<length;i++)
{
unsigned short gTemp = 0;
if (uniChar[i] > 0x80)
{
unsigned short temp = uniChar[i];
wchar_t wTemp[2] = {temp};
char cTemp[8] = {8};