cjson解析json中文乱码
时间: 2023-11-16 17:53:40 浏览: 166
cjson解析json中文乱码的原因通常是编码格式不一致导致的。cjson默认只支持UTF-8编码,如果json文件是其他编码格式(如GB2312),则会出现中文乱码的情况。解决方法是将json文件转换成UTF-8编码格式。
可以使用iconv库进行编码转换,将json文件的编码格式转换成UTF-8。具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iconv.h>
#define INBUF_SIZE 1024
int main()
{
char inbuf[INBUF_SIZE];
char outbuf[INBUF_SIZE];
char *in_ptr = inbuf;
char *out_ptr = outbuf;
iconv_t cd = iconv_open("UTF-8", "GB2312");
if (cd == (iconv_t)-1) {
perror("iconv_open");
exit(1);
}
//读取json文件
FILE *fp = fopen("test.json", "rb");
if (fp == NULL) {
perror("fopen");
exit(1);
}
size_t inbytesleft = fread(inbuf, 1, INBUF_SIZE, fp);
size_t outbytesleft = INBUF_SIZE;
//进行编码转换
if (iconv(cd, &in_ptr, &inbytesleft, &out_ptr, &outbytesleft) == (size_t)-1) {
perror("iconv");
exit(1);
}
//输出转换后的json文件
fwrite(outbuf, 1, INBUF_SIZE - outbytesleft, stdout);
fclose(fp);
iconv_close(cd);
return 0;
}
```