zoukankan      html  css  js  c++  java
  • UTF8转unicode说明

    1、最新版iconv中的char *encTo = "UNICODE//IGNORE"; 是没有这个字符串的,它里面有UNICODELITTLE 和 UNICODEBIG 而且是没有开头表征大小端的两字节的。

    2、转换代码如下:

     1 bool utf8_to_unicode(char *inbuf, size_t *inlen, char *outbuf, size_t *outlen)
     2 {
     3 
     4   /* 目的编码, TRANSLIT:遇到无法转换的字符就找相近字符替换
     5    *           IGNORE :遇到无法转换字符跳过*/
     6   char *encTo = "UNICODELITTLE";
     7   //char *encTo = "gb2312";
     8   //char *encTo = "UNICODE";
     9   /* 源编码 */
    10   char *encFrom = "UTF-8";
    11   //char *encFrom = "utf-8";
    12 
    13   /* 获得转换句柄
    14    *@param encTo 目标编码方式
    15    *@param encFrom 源编码方式
    16    *
    17    * */
    18   iconv_t cd = iconv_open (encTo, encFrom);
    19   if (cd == (iconv_t)-1)
    20   {
    21       perror ("iconv_open");
    22   }
    23 
    24   /* 需要转换的字符串 */
    25   //DBG_PRINT("inbuf=%s
    ", inbuf);
    26 
    27   /* 打印需要转换的字符串的长度 */
    28   //DBG_PRINT("inlen=%d
    ", *inlen);
    29 
    30   /* 由于iconv()函数会修改指针,所以要保存源指针 */
    31   char *tmpin = inbuf;
    32   char *tmpout = outbuf;
    33   //size_t insize = *inlen;
    34   size_t outsize = *outlen;
    35 
    36   /* 进行转换
    37    *@param cd iconv_open()产生的句柄
    38    *@param srcstart 需要转换的字符串
    39    *@param inlen 存放还有多少字符没有转换
    40    *@param tempoutbuf 存放转换后的字符串
    41    *@param outlen 存放转换后,tempoutbuf剩余的空间
    42    *
    43    * */
    44   size_t ret = iconv(cd, &tmpin, inlen, &tmpout, outlen);
    45   if (ret == -1)
    46   {
    47      perror ("iconv");
    48   }
    49 
    50   /* 存放转换后的字符串 */
    51   //DBG_PRINT("outbuf=%s
    ", outbuf);
    52 
    53   //存放转换后outbuf剩余的空间
    54   //DBG_PRINT("outlen=%d
    ", *outlen);
    55 
    56   int i = 0;
    57 
    58   for (i=0; i<(outsize- (*outlen)); i++)
    59   {
    60      ////DBG_PRINT("%2c", outbuf[i]);
    61      //DBG_PRINT("%x
    ", outbuf[i]);
    62   }
    63 
    64   /* 关闭句柄 */
    65   iconv_close (cd);
    66 
    67   return 0;
    68 }
  • 相关阅读:
    tp5 lock的使用
    array_chunk的用法和php操作大数据
    find_in_set使用
    [沈航软工教学] 前六周3,4班排行榜
    [沈航软工教学] 团队项目地址汇总
    [沈航软工教学] 前五周3,4班排行榜
    [Latex]Travis-CI与Latex构建开源中文PDF
    [沈航软工教学] 前三周3,4班排行榜
    [沈航软工教学] 前三周作业总结
    [沈航软工教学] 学生项目Coding地址汇总
  • 原文地址:https://www.cnblogs.com/fdd566/p/6543925.html
Copyright © 2011-2022 走看看