zoukankan      html  css  js  c++  java
  • 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", "u4f60u7684u540du5b57"}

    不过经过我的单步调试发现,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);
  • 相关阅读:
    第二阶段冲刺01
    第十三周进度条
    构建之法阅读笔记5
    水王2
    购买一批书的最低价格
    第十二周进度条
    个人工作总结08
    个人工作总结07
    人机交互设计分析之搜狗输入法
    第八周的学习进度条
  • 原文地址:https://www.cnblogs.com/accumulationbystep/p/13749993.html
Copyright © 2011-2022 走看看