我使用以下代码来测试jsoncpp
#include <json/json.h>
#include <iostream>
using namespace std;
int main(int argc, char ** argv)
{
Json::Value root;
root["test"] = "中文测试123";
Json::StyledWriter styledWriter;
cout << styledWriter.write(root) << endl;
return 0;
}
输出结果如下所示
{
"test" : "中文测试123"
}
我想知道jsoncpp是否可以从unicode逃脱到\\uXXXX
。
FastWriter和StyledWriter我都试过了,没有一个管用
发布于 2021-03-26 00:09:15
这取决于您使用的版本。
使用jsoncpp 1.8.3
{
"test" : "中文测试123"
}
使用jsoncpp 1.8.4
2017年12月21日发布的
相关提交:使用Unicode转义序列化UTF-8字符串(#687)
{
"test" : "\u4e2d\u6587\u6d4b\u8bd5123"
}
使用jsoncpp 1.9.2
于2019年11月14日发布
相关提交:增加emitUTF8设置。(#1045)
#include <json/json.h>
#include <iostream>
void print_json(const Json::Value& value, bool emitUTF8) {
Json::StreamWriterBuilder builder;
builder.settings_["emitUTF8"] = emitUTF8;
std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
writer->write(value, &std::cout);
}
int main() {
Json::Value root;
root["test"] = "中文测试123";
print_json(root, true);
std::cout << std::endl;
print_json(root, false);
}
/*
output:
{
"test" : "中文测试123"
}
{
"test" : "\u4e2d\u6587\u6d4b\u8bd5123"
}
*/
https://stackoverflow.com/questions/50637362
复制相似问题