一、注意事项

1.请注意汉字内码(对应字符为\xcc等)和打印出的转义字符(\\xcc)的区别!!!!该问题导致我们程序调试了差不多一整天!

见:C语言中转义字符的使用

2.另外库函数iconv会把传入的参数指针移位,这是正常的、请不要认为是自己程序有问题。

3.我的终端是utf-8格式,对于其他编码不能显示。

二、看看code

1.test.c

#include <iconv.h>
#include <stdio.h>
#include <string.h>int code_convert(char *inbuf,int inlen,char *outbuf,int outlen)
{iconv_t cd;int rc;char **pin = &inbuf;char **pout = &outbuf;cd = iconv_open("UTF-8","GB2312");if (cd==0)return -1;memset(outbuf,0,outlen);if (iconv(cd,pin,&inlen,pout,&outlen) == -1)return -1;iconv_close(cd);return 0;
}int main(){char src[4096] = "\xcc\xb7\xbf\xad";//注意:此处写为char src[4096] = "ccb7bfad";将不会被转换,因为系统认为是英文字母、而不是gbk的内码!char dst[4096];int srclen = 4096;int dstlen = 4096;int ret = code_convert(src,srclen,dst,dstlen);printf("TK--------->>>>ret is %d\nsrc is %s\ndst is %s\n",ret,src,dst);return 0;
}

2.gcc test.c -o test

3../test

TK--------->>>>ret is -1
src is ̷��
dst is 谭凯

三、iconv命令的正确使用

1.错误做法

vi input

\xcc\xb7\xbf\xad

iconv -f gb2312 -t utf-8 input >output

vi output

\xcc\xb7\xbf\xad

原因:在编程时\x是一个转义字符,可以说明\xcc只是一个十六进制的字符;但在文件中不可以这样做!

2.正确做法

vi input

谭凯

iconv -f gb2312 -t utf-8 input >output

vi output

Ì·¿

四、项目总结

当遇到底层上报有误,即:把"\xcc"上报成"\\xcc"时(前者包含一个字符‘\xcc’,后者包含4个字符'\\' ,'x','c','c')可以用提取后边两个字符,完后在添加的方法解决。

解决方法如下:

1.代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iconv.h>long atox(char *s){return strtol(s,NULL,16);
}int main()
{char a[17] = "\\xcc\\xb7\\xbf\\xad";  printf("a is %s\nstrlen(a) is %d\n",a,strlen(a));a[4] = '\0';a[8] = '\0';a[12] = '\0' ;if(a[0] == '\\'){printf("atoi(&a[2]) is %d\n",atox(&a[2]));printf("atoi(&a[6]) is %d\n",atox(&a[6]));printf("atoi(&a[10]) is %d\n",atox(&a[10]));printf("atoi(&a[14]) is %d\n",atox(&a[14]));}return 0;
}

2.gcc test.c -o test

./test

a is \xcc\xb7\xbf\xad
strlen(a) is 16
atoi(&a[2]) is 204
atoi(&a[6]) is 183
atoi(&a[10]) is 191
atoi(&a[14]) is 173

C语言汉字gbk转utf-8相关推荐

  1. 在nodejs中将GBK转UTF

    问题 在对接第三方接口时接口返回的响应数据格式为GBK而服务端语言使用的是nodejs 于是常规的方式接收到数据后中文呈现乱码 心路历程 通过网上查找解决方案,最多的就是使用以下方式将GBK转为UTF ...

  2. C语言实现GBK/GB2312/五大码之间的转换(转)

    源:C语言实现GBK/GB2312/五大码之间的转换 //----------------------------------------------------------------------- ...

  3. 汉字GBK编码-------也叫区位码------本人备注

    原文地址::http://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php 相关文章 1.gbk+unicode+汉字编码对照表----https://wenku.baid ...

  4. C语言实现gbk/utf8/unicode编码转换

    细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4 Unicode与UTF-8互转(C语言实现) 不依赖任何系统API,用c语言实现gbk/utf8/uni ...

  5. c语言输出字符的utf码,C语言里如何把GBK码转换为UTF8?

    C语言里如何把GBK码转换为UTF8? (2013-03-04 19:41:31) 标签: it 一.利用iconv函数族进行编码转换 在LINUX上进行编码转换时,既可以利用iconv函数族编程实现 ...

  6. 不依赖任何系统API,用c语言实现gbk/utf8/unicode编码转换

    转载地址:https://blog.csdn.net/bladeandmaster88/article/details/54837338 汉字'我' Unicode编码是0x6211       01 ...

  7. C语言汉字写入问题及Unicode优势

    常用的字符编码有以下三种: 1.ASCII 只支持英文,全部为8位 2.DBCS  支持英文和中文,但中文需要两个字节(16位) 3.UNICODE 支持英文和中文,英文和中文都需要两个字节 ASCI ...

  8. html批量转码工具,文件转码工具(文件GBK与UTF编码批量转码工具)

    这是一个将批量的txt文件转换成Unicode编码的工具,转换的速度快,使用简单. 什么是Unicod编码? Unicode(统一码.万国码.单一码)是一种在计算机上使用的字符编码.Unicode 是 ...

  9. c语言汉字的ascii,C语言中两位ASCII码可以表示汉字

    ******************************************************** 现在开始分析: 资料一说: "206 210 176 174 214 236 ...

最新文章

  1. in the java search_Search API – Using scrolls in Java - Elasticsearch Java API 手册
  2. vsftpd + mysql + virtual users
  3. 返回动态html,使用硒返回动态页面的html代码
  4. android绘制河流双曲线,项目三:河道测量试题库(13页)-原创力文档
  5. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1068:与指定数字相同的数的个数
  6. 鸿蒙系统小卡片,升级鸿蒙101版本,UI审美升级了
  7. ListView(3)
  8. 去年的今天我们举行了婚礼
  9. 陈纪修老师《数学分析》 第09章:数项级数 笔记
  10. 《研磨设计模式》builder生成器模式(golang)
  11. Axure Rp8激活码
  12. 数据结构与算法书籍汇总(从小白到大神)
  13. 编译原理 实验3《算符优先分析法设计与实现》
  14. 史上最强:NumPy 实现全部机器学习算法,代码超3万行!
  15. 什么是java的类加载器_JAVA-大白话探索JVM-类加载器(一)
  16. ▷Scratch课堂丨在Scratch上制作植物大战僵尸游戏
  17. 浏览器使用默认端口9006连接TinyWebServer服务器连接不上?
  18. ESP32-ADC学习
  19. java语言的编译器命令_Java编译器的命令是( )
  20. 管理者如何提高自身管理能力?

热门文章

  1. 湍流退化图像复原如何使用matlab,一种基于相关最大性的湍流退化图像复原方法与流程...
  2. 幼儿园计算机培训心得,幼儿园心得体会范文
  3. docker(十一):网络命名空间
  4. 爱弹幕服务器不稳定,最爱弹幕视频 现代Hold X绚丽动手玩
  5. 华为设备Ping命令
  6. 一曲《千秋令》,唱不尽千古风华
  7. 山海演武传·黄道·第一卷 雏龙惊蛰 第五章 蛮族少女与白泽
  8. 民间借贷利息,最新计算方式
  9. 游戏小程序源码 一起来找茬
  10. 华为Huawei服务器IBMC默认用户密码