jsoncpp 中文字符串被转为 \u uf8的解决办法

最早的时候jsoncpp不是这样的。

Json::Value root;
root["name"] = "你的名字";   //Chinese, and use utf8 
Json::FastWriter fwriter;
std::string retStr = fwriter.write(root);
std::cout << retStr;

之前的jsoncpp返回是这样的

{"name", "你的名字"}

现在成这样了

{"name", "\u4f60\u7684\u540d\u5b57"}

不过经过我的单步调试发现,jsoncpp还有个配置的。就是可以设置就是emitUTF8这个配置。

复制代码
std::string JsonToString(const Json::Value & root)
{
	static Json::Value def = []() {
		Json::Value def;
		Json::StreamWriterBuilder::setDefaults(&def);
		def["emitUTF8"] = true;
		return def;
	}();

	std::ostringstream stream;
	Json::StreamWriterBuilder stream_builder;
	stream_builder.settings_ = def;//Config emitUTF8
	std::unique_ptr<Json::StreamWriter> writer(stream_builder.newStreamWriter());
	writer->write(root, &stream);
	return stream.str();
}

JsonCpp 1.9.2 中文支持

Json 1.9.2

只需要在打开的时候设置一下默认的参数就可以了,读取的时候是 UTF8 的要转一下 GBK
这些写入文件就能正常看到中文了。

Json::StreamWriterBuilder wBuilder;
Json::Value def;
def["emitUTF8"] = true;
wBuilder.setDefaults(&def);
复制代码
posted @   bluedream1000  阅读(879)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示