-
网络通信中通过socket套接字获取到json格式数据,在VS2019控制台上打印出获取到的数据中中文显示乱码
原因:源文件/控制台编码方式可能一致,但是获取到的json数据是utf-8
解决方法:在主函数main中加入以下代码
SetConsoleOutputCP(CP_UTF8);
结果显示正常:
-
cjson库对获取到的json数据进行解析:出现中文乱码
将获取到的json格式数据解析,获取到相关内容中中文乱码
原因:通过cjson库解析的json数据是cjson相关格式,不适合输出到控制台
方法:可以先将其格式化:用到cJSON_Print()函数,针对json数据类型中的字符串类型进行格式化
//item2 是一个cJSON 对象,表示JSON 中的字符串类型,可以通过 cJSON_Print 函数将其以格式化的方式输出
char* formattedJson = cJSON_Print(item2);
if (formattedJson)
{
printf("weather_now(Formatted JSON): %s\n", formattedJson);
free(formattedJson); // 释放 cJSON_Print 分配的内存
}
else
{
printf("无法格式化输出 JSON\n");
}
结果: