VS2019-C接收json格式数据,打印到控制台乱码

本文讲述了在VS2019中通过socket获取JSON数据时遇到的中文乱码问题,主要原因是源文件和控制台编码不一致。解决方法包括设置控制台输出编码为UTF-8,并使用cJSON_Print函数格式化JSON数据输出。
摘要由CSDN通过智能技术生成
  • 网络通信中通过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");
}

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值