C实现utf8与gbk互转

小记

在实现解析上传后的csv文件时,发现excel是gbk编码,C解析的时候乱码,翻资料找到这篇博客:
https://blog.csdn.net/wuyu92877/article/details/52472810
C和C++实现字符转码

在移植到arm上后,发现liconv函数通过cgi无法正常调用,从shell中是可以正常调用的,就很奇怪。

然后今晚没找到好的解决方法,就弃用这个函数了,直接用命令行的方式将文件的解码格式转换

iconv -f GB2312 -t UTF-8 a.csv > b.csv

在c文件中system调用一下解决问题

笔记

gbk转utf8代码如下
调用 liconv 库
voicebuff中保存的是转化后的字符串

char voicebuff[10240];
int gbk2utf(char *text)
{
  int count;
  int nlen, i = 0;
  char *encFrom = "GBK//TRANSLIT";
  char *encTo = "UTF-8";
  memset(voicebuff, 0, 10240);
  //编码转换GBK 转化为UTF8
  iconv_t cd = iconv_open(encTo, encFrom);
  if (cd == (iconv_t)-1)
  {

    perror("iconv_open");

    return -1;
  }
  int srclen = strlen(text);
  int outlen = 1024;
  char *srcstart = text;
  char *tempoutbuf = voicebuff;

  size_t ret = iconv(cd, &srcstart, &srclen, &tempoutbuf, &outlen);
  if (ret == -1)
  {
    perror("iconv");

    return -1;
  }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值