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

c 讀取json中文亂碼問題

錢諍諍1年前7瀏覽0評論

在C語言中讀取JSON文件時,遇到中文字符出現亂碼的問題是很普遍的。這里提供一種解決方案,使用utf-8編碼打開文件,并使用第三方庫 cJSON 來解析JSON。

#include <stdio.h>
#include <cJSON.h>
int main(void) {
FILE *fp = fopen("data.json", "r");
if (!fp) {
printf("Failed to open file.");
return 1;
}
// 設置utf-8編碼
setlocale(LC_ALL, "en_US.UTF-8");
// 獲取文件大小
fseek(fp, 0, SEEK_END);
long fsize = ftell(fp);
fseek(fp, 0, SEEK_SET);
// 讀取文件內容
char *content = malloc(fsize + 1);
fread(content, fsize, 1, fp);
fclose(fp);
// 解析JSON
cJSON *json = cJSON_Parse(content);
cJSON *name = cJSON_GetObjectItem(json, "name");
printf("%s\n", name->valuestring);
// 釋放資源
cJSON_Delete(json);
free(content);
return 0;
}

在上面的代碼中,我們首先打開JSON文件,并讀取文件內容。為了避免中文亂碼問題,我們使用 setlocale 函數設置了 utf-8 編碼。然后使用 cJSON_Parse 函數解析 JSON 內容。在獲取 JSON 中文字段時,我們使用 cJSON_GetObjectItem 函數。

需要注意的是,在使用 cJSON_GetObjectItem 函數獲取 JSON 中文字段時,字段名必須是 ASCII 編碼,不能使用中文,否則會出現亂碼。同時,在使用 cJSON_Parse 函數解析 JSON 時,cJSON 庫會自動將 JSON 中的字符串編碼轉換為 UTF-8 格式,因此我們不需要額外處理中文亂碼。