小记
在实现解析上传后的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;
}