在編寫C語言程序的過程中,使用JSON格式的數(shù)據(jù)交換已經(jīng)成為相當(dāng)普遍的情況。而有時(shí)候我們的JSON返回?cái)?shù)據(jù)中出現(xiàn)了繁體中文,這就需要我們對這種情況進(jìn)行處理。下面是一種常見的解決方法。
#include "cJSON.h" #include#include int main() { setlocale(LC_ALL, "en_US.utf8"); //設(shè)置環(huán)境為UTF-8編碼 cJSON *root = cJSON_Parse("{\"name\": \"繁體中文\",\"age\": 20}"); if (root) { cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name"); wprintf(L"%ls: %d\n", name->valuestring, cJSON_GetObjectItemCaseSensitive(root, "age")->valueint); } cJSON_Delete(root); return 0; }
關(guān)鍵在于設(shè)置環(huán)境編碼為UTF-8,這樣從JSON讀取的字符串可以正確解析為Unicode字符。我們使用了setlocale函數(shù)來設(shè)置環(huán)境編碼,而cJSON獲取Json對象的API cJSON_GetObjectItemCaseSensitive也支持Unicode,所以直接使用獲取的字符串就可以正確輸出繁體中文。