随笔 - 23  文章 - 0 评论 - 68 
<2010年2月>
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213

广告中国绩效网,注册立刻送10元 广告中国绩效网,注册立刻送10元

常用链接

留言簿(7)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

      (申明:此文章属于原创,若转载请表明作者和原处链接 )      
      /*      author:   wu.jian   (吴剑)      English name: Sword
      /*      date:      2007-12-13
      /*      purpose:   知识共享

      这几天工作上碰到了UTF-8转GB2312的问题,而且是在嵌入式的环境下,没有API可用,查了很多网上的资料,大多调用VC或者linux下自带的接口。在这里我将这两天的工作做个总结。
      总的来说分为两大步(这里就不介绍基础知识了):

      一、UTF8 -> Unicode
      由于UTF8和Unicode存在着联系,所以不需要任何库就可以直接进行转换。首先要看懂UTF8的编码格式:
      U-00000000 - U-0000007F: 0xxxxxxx  
      U-00000080 - U-000007FF: 110xxxxx 10xxxxxx  
      U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx  
      U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx  
      U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx  
      U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx  
      前面几个1就代表后面几个字节是属于一起的。如果要解析一长串UTF8格式的字符串,这点就很有用了。下面这个函数就是判断前面几个1的(这里有define APP_PRINT printf,这样当release的时候将这个宏定义为空就行了,不需要一个一个去改,又方便重新调试):
      int GetUtf8ByteNumForWord(u8 firstCh)
      {
          u8 temp = 0x80;
          int num = 0;
 
          while (temp & firstCh)
          {
                num++;
                 temp = (temp >> 1);
           }

       APP_PRINT("the num is: %d", num);
        return num;
      }
      利用这个函数可以得到字符串中那几个字节是一起的。因为UTF8最大只有6个字节,所以就根据返回值来处理这里我只处理了3个字节和1个字节的UTF8的编码,因为一般来说中文在UTF8中是3个字节。

//将len个字节的UTF8格式的转换成GB2312格式存放在temp预先申请好的缓冲区中
void Utf8ToGb2312(const char* utf8, int len, char *temp)
{
       APP_PRINT("utf8->unicode: \n");
       APP_PRINT("utf8: [");
       for (int k = 0; k < len; k++)
       {
              APP_PRINT("%02x ", utf8[k]);
       }
       APP_PRINT("]\n");
 
       int byteCount = 0;
       int i = 0;
       int j = 0;

       u16 unicodeKey = 0;
       u16 gbKey = 0;


      //循环解析
       while (i < len)
       {   
        switch(GetUtf8ByteNumForWord((u8)utf8[i]))
        {
          case 0:
                temp[j] = utf8[i];
                byteCount = 1;
          break;

          case 2:
          temp[j] = utf8[i];
          temp[j + 1] = utf8[i + 1];
          byteCount = 2;
          break;

         case 3:
                 //这里就开始进行UTF8->Unicode
                 temp[j + 1] = ((utf8[i] & 0x0F) << 4) | ((utf8[i + 1] >> 2) & 0x0F);
                 temp[j] = ((utf8[i + 1] & 0x03) << 6) + (utf8[i + 2] & 0x3F);

                //取得Unicode的值
                 memcpy(&unicodeKey, (temp + j), 2);
                 APP_PRINT("unicode key is: 0x%04X\n", unicodeKey);

                  //根据这个值查表取得对应的GB2312的值
                gbKey = SearchCodeTable(unicodeKey);
                APP_PRINT("gb2312 key is: 0x%04X\n", gbKey);
    
                if (gbKey != 0)
                {
                       //here change the byte
                        //不为0表示搜索到,将高低两个字节调换调成我要的形式
                       gbKey = (gbKey >> 8) | (gbKey << 8);
                       APP_PRINT("after changing, gb2312 key is: 0x%04X\n", gbKey);
                       memcpy((temp + j), &gbKey, 2);
                  }

                byteCount = 3;
          break;

          case 4:
          byteCount = 4;
          break;
         case 5:
          byteCount = 5;
          break;
         case 6:
          byteCount = 6;
          break;
    
         default:
          APP_PRINT("the len is more than 6\n");
          break;    
        }

        i += byteCount;
        if (byteCount == 1)
        {
               j++;
        }
        else
        {
               j += 2;
        }
  
       }
       APP_PRINT("utf8: [");
       for (k = 0; k < j; k++)
       {
              APP_PRINT("%02x ", temp[k]);
       }
       APP_PRINT("]\n");
}

      二、下面主要谈谈利用查表法来进行Unicode->GB2312的转换,首先下载码表,一般码表都是将GB2312的放在前面,Unicode放在后面,这样对于我们来说不方便使用,所以我转换了下,将Unicode放在前面,而且按照从小到大排好序。(这里只需要考虑都为两个字节的情况,因为前面的UTF8->Unicode并没有将单字节的ASCII转换成Unicode)
            (1)做表:(可以到这里下载:http://blog.91bs.com/?action=show&id=20,这里谢谢渣渣的猪窝)
            这个是原来的样子:
            0x8140 0x4E02 #CJK UNIFIED IDEOGRAPH
            0x8141 0x4E04 #CJK UNIFIED IDEOGRAPH
            0x8142 0x4E05 #CJK UNIFIED IDEOGRAPH
            先弄成(这个可以写个小程序来做,我就是在VC上做的,如果需要可以联系我):
            { 0x4E02 ,0x8140 }, //CJK UNIFIED IDEOGRAPH
            { 0x4E04 ,0x8141 }, //CJK UNIFIED IDEOGRAPH
            { 0x4E05 ,0x8142 }, //CJK UNIFIED IDEOGRAPH
            这样就可以把这些放在.h文件中了,下面是我的定义:
            typedef struct unicode_gb
            {
                   unsigned short unicode;
                   unsigned short gb;
            } UNICODE_GB;

            UNICODE_GB code_table[] = 
            {
                  { 0x4E02, 0x8140 },   //CJK UNIFIED IDEOGRAPH
                  { 0x4E04, 0x8141 },  //CJK UNIFIED IDEOGRAPH
                  { 0x4E05, 0x8142 },  //CJK UNIFIED IDEOGRAPH
                  。。。。。。省略

            下面这一步也很简单,在VC中用冒泡排序法,对这个数组按照unicode值进行排序,如果需要可以联系我,把最终结果打印出来,在cmd下运行name > 1.txt就输出到文件,这样就有了一个按照unicode排好序的unicode->gb2312码表。

   int main(int argc, char *argv[])
{

    int num = 0;
    UNICODE_GB temp;
    int i = 0;
    int j = 0;

    num = sizeof(code_table) / sizeof(UNICODE_GB);

    printf("struct size: %d | total size: %d | num is: %d \n", 
    sizeof(UNICODE_GB), sizeof(code_table), num);

    for (i = 0; i < num; i++)
    {
        for (j = 1; j < num - i; j++)
        {
            if (code_table[j - 1].unicode > code_table[j].unicode)
            {
                temp.unicode = code_table[j - 1].unicode;
                temp.gb = code_table[j - 1].gb;
                code_table[j - 1].unicode = code_table[j].unicode;
                code_table[j - 1].gb = code_table[j].gb;
                code_table[j].unicode = temp.unicode;
                code_table[j].gb = temp.gb;
            }
        }
    }

    printf("here is the code table sorted by unicode\n\n");

    for (i = 0; i < num; i++)
    {
        printf("{\t0x%04X,\t0x%04X\t},\t\n", code_table[i].unicode, code_table[i].gb);
     }

       printf("\n\n print over!\n");

   //以下注释掉的其实就是我用来对原来的码表添加,{,}等用的
   /*
    char buff[100];
    char buff_1[100]; 
 
    FILE* fp = NULL;
    FILE *fp_1 = NULL;

    memset(buff, 0, 100);
    memset(buff_1, 0, 100);
 
    fp = fopen("table.txt", "rw");
    fp_1 = fopen("table_1.txt", "a+");

    if ((fp == NULL) || (fp_1 == NULL))
    {
        printf("open file error!\n");
        return 1;
    }

    while (fgets(buff, 100, fp) != NULL)
    {
        buff[8] = ',';

        fputs(buff, fp_1);
    }
 */

    return 0;
}

      最后就是搜索算法了,前面已经排好序了,现在我们把排好序的码表放在我们真正需要的.h文件中。大家应该猜我用什么算法搜索了吧,二分法。

#define CODE_TABLE_SIZE 21791
//这个表是死的,所以就直接用宏表示长度,不用每次都用size,不过这样可能对移植性不好。
u16 SearchCodeTable(u16 unicodeKey)
{
    int first = 0;
    int end = CODE_TABLE_SIZE - 1;
    int mid = 0;

    while (first <= end)
    {
        mid = (first + end) / 2;

        if (code_table[mid].unicode == unicodeKey)
        {
            return code_table[mid].gb;
        }
        else if (code_table[mid].unicode > unicodeKey)
        {
            end = mid - 1;
        }
        else 
        {
            first = mid + 1;
        }
    }
    return 0;
}
      到此,已经能够将UTF8串转换成GB2312了。是一长串哦,而不是单个汉字的编码转换。


posted on 2007-12-13 19:21 吴剑 阅读(26106) 评论(63)  编辑 收藏 引用 所属分类: 我的原创

FeedBack:
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2007-12-26 15:13 A'can
不错给我了一些启发,可以把你做的2个小工具发给我下
我的mail:acan8888@126.com
3Q先  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-01-01 14:13 wuxw
首先感谢吴兄无私奉献。
我在你的基础上顺利的把unicode 转gb2312功能植到设备中去了。

另外,我也想提两点意见,吴兄可以看看。
一是,渣渣的猪窝那个字符表有点大,尤其是对于我们嵌入式设备。所以,我用java生成了一个字符表,大概7445条映射,基本包含了目前的常用中文字符,做成静态数组,占内存空间大概29k.可以大大节省设备空间。也可以降低查找时间。
二就在算法做些优化,利用HASH表和二分查找结合的方法。取unicode高8位的值作为HASH的键值,这样,一个键下管理256条映射。再使用二分查找,算法复杂度为 O(log256)=8。这样会在算法上又得到了很好的优化。HASH占用1K的内存。

由于公司代码保密,所以无法提供。见凉!

  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-01-29 21:34 Ashow
非常感谢啊兄弟!!!
我做了unicode->gb2312的,也是用二维树组(7445个),也是做了小工具.
正在找utf8-2312的,你的资料真是太全面了....再次感谢!!!  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-03-01 17:50 nio
太感谢你了,热泪ING。。。。。。  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-03-04 17:36 yyml20
真的太感谢了
把你的那两个小工具发我下了
e_mail:yanml@hundsun.com
谢谢  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-05-16 07:46 erxierxi
能不能发一份给我呢,我对你里面的有些定义实在是有点不明白,如u8,u16他们是什么类型啊,你怎么定义的。我的邮箱是yuanyuanzq@163.com。谢谢  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-05-18 21:40 dragon
能不能也给兄弟一份啊~~~~在此谢过了。
e_mai:long5674735@163.coml  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-05-21 16:01 selina
pangyuan@126.com
感谢!  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-08-05 11:42 liyong
能不能也给兄弟一份啊~~~~在此谢过了。
e_mai:tianqu308@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-08-12 10:02 Huzhiwei
非常需要,请给我一份,多谢!
huzhiwei020@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-08-12 17:19 ly
终于找到了。非常有帮助,能否给我发一份,多谢!
lyxidian@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版[未登录] 2008-08-17 00:58 harry
不觉得我们找你的表找得很麻烦么?你不能贴出来么?  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-08-23 20:53 panfei
能不能给我一份,多谢!
panfei.08@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-09-08 22:55 liangjm
能不能把你的工具也发给我一份,谢谢
liangjm_1984@163.com。 十分感谢  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版[未登录] 2008-09-21 22:36 haha
能不能把你的工具也发给我一份,谢谢
huangcy1@163.com。 十分感谢   回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-09-27 21:24 meimei03312
你好,可否将UNICODE_GB code_table[] = {.....}
码表发我一份。
meimei03312@yahoo.com.cn
谢谢
  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-11-06 20:17 dangzhao2003@yahoo.com.cn
你好,可否将UNICODE_GB code_table[] = {.....}
码表发我一份。

dangzhao2003@yahoo.com.cn  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版[未登录] 2008-11-10 13:36 Mike
Hi,

那个Txt文件无法下载,不知谁有现成的unicode_gb表(7445个的最好),可否放到txt文件中发给我? 省得我再去转换了.非常感谢!
我的email: mike_big@126.com

Mike  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-11-11 20:10 lele
真的是太感谢了!
找了好久,终于找到了,说的真是太好了!
我也需要这两个小工具,能有Unicode-gb的表最好了!
谢谢!
email:hnswxo@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2008-11-13 10:49 lele
我的也是7000多映射,怎么200多K呀?

@wuxw
  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-03-13 08:33 xin feng
你好,可否将UNICODE_GB code_table[] = {.....}
码表发我一份。我也急需要!
email:wxf820822@yahoo.com.cn  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-03-20 00:31 pail
码表发我一份。我也急需要!
email:pail_li@yeah.net

谢谢  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-04-22 15:39 ffwsh
你好,可否把程序代码发给我一份?非常感谢
jx_xd@msn.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-04-23 12:37 leftpoint
您好,十分感谢!正学这方面的东西,能不能把您那个表给我一份?谢谢
邮箱:goo_zk@tom.com
  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-05-21 20:05 yyyy
你好!码表能发给我一份吗?我也需要!谢谢!!!
邮箱:yuanyuhua@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-06-12 15:30 xjl
你好,能给我一份码表吗?万分感谢!
xjl.0724@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-06-30 15:05 Zhang Ying
你好!码表和源程序能发给我一份吗?谢谢了!yinzhang@21cn.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-07-22 17:36 Rorbin
你好!请发码表和源程序能发给我一份。谢谢!!!
邮箱:jdxxjq@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-07-23 13:14 lyc
你好!请发码表和源程序能发给我一份。谢谢!!!
邮箱:lyc@tom.com   回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-07-23 13:15 lyc
你好!请发码表和源程序能发给我一份。谢谢!!!
邮箱:lyc.1@tom.com ,lyc.1@sohu.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-08-20 09:18 086
太好了,现在正着手搞这方面。能否发我一份工具和源程序。
谢谢!
0860431@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-08-31 11:28 hua
能否发给我一份阿,不胜感激!
zhangzhenhua1984@gmail.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-09-02 14:55 flyhorse2k
也给我一份码表吧,非常感谢
zhaozhg@keylab.net  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版[未登录] 2009-09-19 17:05 Allen
嗯, 需要一份码表, 因为那个网站已经上不去了, 谢谢
allen[at]imallen.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版[未登录] 2009-10-10 18:49 stone
能不能也给我一份,谢谢
stone.yan@techbridge-inc.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-10-12 16:00 wong
兄弟,我也正需要UNICODE_GB code_table[] = {.....}
码表
恳请发我一份。
我也急需要!

另外那两个小工具的也发下,实在细致全面!!!
谢谢!
Email:wanggang@comsys.com.cn
juliet116@gmail.com


  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-10-25 11:26 eSky
u8,u16,u32这种类型好呀,但这类型怎么让编译器认识呢?不是用typedef重定义的吧。  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-11-05 20:34 dawea wang
你好!上面的连接没有下载到该表格啊,麻烦也帮我发下好吧,十分感谢!~
mail: wylinder@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2009-11-12 19:07 xudayong
你好,我现在开发的linux系统的设备,嵌入式没有相关的转换支持,请发给我一份,万分感谢!!
xxdyhero@163.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2010-02-09 12:30 lorin
你好,文档写的非常好,也请发给我一份,万分感谢!!
jordanliuster@gmail.com   回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2010-02-22 15:37 djyos
你好,链接的字符表找不到了,给我发一份,好吗,谢谢了。
lstpr@21cn.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2010-03-03 16:37 VCILOVE
能够发送源码一份,包括字符表呢,谢谢!
VCILOVE@yahoo.cn  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版[未登录] 2010-04-25 17:37 kevin
能否发一份码表给我?十分感谢
keliven0412@gmail.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2010-05-31 21:49 lvzi
能否发我一份,十分感谢。
liuzihuang@gmail.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2010-06-20 21:52 唐龙
能否发我一份,十分感谢。
darkson@yahoo.cn  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2010-08-04 15:25 Braid
能否发我一份,十分感谢。
icy_stones@qq.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2010-09-08 13:14 MCU
做表:(可以到这里下载:http://blog.91bs.com/?action=show&id=20,这里谢谢渣渣的猪窝)
这个下载不了呀,能不能给我发份呀,谢谢啊!425742287@qq.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2010-10-08 09:33 陈慧兰
能否发我一份,十分感谢呢
chenhuinan1231@126.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版[未登录] 2010-10-12 19:01 jane
我在做linux下的字符转换,能否给我发一份源码和那两个小工具?
1_2_3456@163.com万分感谢  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2011-03-03 18:51 whq
我在做linux下的字符转换,能否给我发一份源码和那两个小工具?
1万分感谢 回复 更多评论
我也要表,牛人 谢谢啊 wadldyy@yahoo.cn  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2011-10-18 17:30 滴水瓦
工作中也碰到了这个问题,也给我发一份啊,万分感谢
1150353553@qq.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2012-09-03 22:14 tripp
工作中遇到了这个问题,发一份码表和源码给我吧
takingfire09@gmail.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2012-09-07 11:28 f1120c
最近在搞这个编码转换,请给我一份源码和那两个工具 谢谢
邮箱地址756485912@qq.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2012-10-09 14:23 vivi
工作中遇到了这个问题,请给我一份源码和那两个工具,万分感谢
邮箱地址 235287334@qq.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版[未登录] 2012-11-09 16:06 LINUX
我也希望拥有一份!854992939@qq.com
谢谢你啦!
  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2012-12-26 16:18 y11022053
可不可以发一份完整的utf8转gb2312的C代码
y11022053@yahoo.com.cn  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2013-02-21 10:03 smart
麻烦发一份代码,utf8转gb2312的,谢谢,524282056@qq.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2013-12-12 13:01 Tony C
thank you a lot  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2013-12-12 13:08 Tony C
既然可以递交,就多说两句。 多谢楼主!
http://pan.baidu.com/share/link?shareid=2253699327&uk=2986367675
我参考以下链接,做了一些修改。
http://www.herongyang.com/gb2312/unicode_gb2312.html

生成的代码如下,前面是Unicode的值,后面是GB2312的值。
总共是7447个GB字符。整个数组大约28K,大概如 wuxw 所言。

。。。
{4E48, C3B4}, // 么
{4E49, D2E5}, // 义
{4E4B, D6AE}, // 之
{4E4C, CEDA}, // 乌
{4E4D, D5A7}, // 乍
{4E4E, BAF5}, // 乎
{4E4F, B7A6}, // 乏
{4E50, C0D6}, // 乐
{4E52, C6B9}, // 乒
{4E53, C5D2}, // 乓
{4E54, C7C7}, // 乔
{4E56, B9D4}, // 乖
{4E58, B3CB}, // 乘

如果链接失效的话,请参考那段java code。
Tony C
  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2013-12-12 13:27 Tony C
抱歉,以上两条回复欠妥。 这个表好像有问题!!!!
Tony C  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版[未登录] 2014-11-21 17:31 bobo
你好,那个 喳喳窝的 表下载不了。

能否发给我一份代码给我。非常感谢

zhuangbo214@gmail.com  回复  更多评论
  
# re: UTF-8, Unicode, GB2312格式串转换之C语言版 2015-03-25 20:53 loq
你好,总结得很好。
把这份代码和表给我好吗,真的非常感谢
能否发到邮箱992092526@qq.com  回复  更多评论
  
只有注册用户登录后才能发表评论。