在使用C語言讀取json文件時,如果文件中存在中文,可能會出現中文亂碼的問題。下面我們介紹如何解決這個問題。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { //讀取json文件 FILE *fp = fopen("example.json", "r"); if(fp == NULL) { printf("文件打開失敗\n"); return 1; } fseek(fp, 0, SEEK_END); long fSize = ftell(fp); fseek(fp, 0, SEEK_SET); char *jsonString = malloc(fSize + 1); fread(jsonString, fSize, 1, fp); fclose(fp); jsonString[fSize] = '\0'; //解析json文件 json_error_t error; json_t *root = json_loads(jsonString, 0, &error); if(root == NULL) { printf("解析json文件失?。?s\n", error.text); return 1; } //獲取json對象中的屬性值(中文) json_t *name = json_object_get(root, "name"); const char *nameStr = json_string_value(name); //打印屬性值 printf("%s\n", nameStr); //釋放資源 json_decref(root); free(jsonString); return 0; }
上述代碼中,我們使用了 jansson 庫來解析json文件。在讀取文件時,我們通過設置文件指針的位置和文件長度,將讀取到的文件內容存儲到char數組中。在解析json文件時,我們通過json_object_get方法獲取json對象中的屬性值,再通過 json_string_value 方法獲取屬性值的字符串表示。
通過以上的方式,我們可以在C語言中正確讀取帶有中文的json文件。
上一篇vue cdn 首頁優化
下一篇vue class名拼接