欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 讀取json文件數據亂碼

林子帆1年前7瀏覽0評論

在C語言中讀取Json文件數據時,可能會遇到亂碼問題,出現這種情況可能是因為Json文件本身編碼出現了問題,或者是讀取文件的方式不正確,下面我們就來看看如何解決這個問題。

首先,我們需要確定Json文件的編碼格式,可以通過文本編輯器的“另存為”功能查看文件的編碼格式,一般情況下Json文件的編碼格式為UTF-8。

{
"title": "中文標題",
"content": "中文內容"
}

如果Json文件的編碼格式為UTF-8,我們需要使用特定的庫函數讀取文件數據,如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <json/json.h>
int main()
{
FILE *fp;
char buffer[1024];
struct json_object *json;
fp = fopen("data.json", "r");
if (fp == NULL) {
printf("Error: %s\n", strerror(errno));
return -1;
}
fread(buffer, 1, 1024, fp);
fclose(fp);
json = json_tokener_parse(buffer);
return 0;
}

如果Json文件的編碼格式不是UTF-8,我們需要對讀取的數據進行轉換,如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <json/json.h>
int main()
{
FILE *fp;
char buffer[1024];
char *utf8;
struct json_object *json;
fp = fopen("data.json", "r");
if (fp == NULL) {
printf("Error: %s\n", strerror(errno));
return -1;
}
fread(buffer, 1, 1024, fp);
fclose(fp);
iconv_t cd = iconv_open("UTF-8", "GBK");
size_t inlen = strlen(buffer);
size_t outlen = 1024;
utf8 = (char*)malloc(outlen);
if (iconv(cd, &buffer, &inlen, &utf8, &outlen) == -1) {
printf("Error: %s\n", strerror(errno));
return -1;
}
json = json_tokener_parse(utf8);
return 0;
}

以上就是解決C語言讀取Json文件數據亂碼問題的方法,希望對大家有所幫助。