众所周知,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};
WideCharToMultiByte (CP_ACP, 0, wTemp, 2, cTemp, 8, NULL, NULL);
gTemp = (unsigned char)cTemp[0] << 8 | (unsigned char)cTemp[1];
printf("{0x%X,0x%X}/*%s*/,\n",temp,gTemp,cT

本文介绍了如何使用C语言将GB2312编码与UNICODE编码进行相互转换。通过创建包含UNICODE码点的数组,并实现二分查找算法,可以在GB2312和UNICODE之间进行高效转换。这种方法特别适用于处理0X4E00到0X9FA0范围内的常用汉字。
最低0.47元/天 解锁文章
5047

被折叠的 条评论
为什么被折叠?



