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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM