jsoncpp 中文字符串被转为 \u uf8的解决办法
不过经过我的单步调试发现,jsoncpp还有个配置的。就是可以设置就是emitUTF8这个配置。只需要在打开的时候设置一下默认的参数就可以了,读取的时候是 UTF8 的要转一下 GBK。最早的时候jsoncpp不是这样的。JsonCpp 1.9.2 中文支持。之前的jsoncpp返回是这样的。这些写入文件就能正常看到中文了。
·
最早的时候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);
转载网站:
https://www.cnblogs.com/accumulationbystep/p/13749993.html
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)