• 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);
  • 相关阅读:
    JavaScript HTML DOM
    JavaScript 对象与函数
    DVWA--Command Injection
    sqli-libs(2)
    python学习之路(17)
    sqli-labs(1)
    python学习之路(16)
    python学习之路(15)
    DVWA--Brute Force
    python学习之路(14)
  • 原文地址:https://www.cnblogs.com/accumulationbystep/p/13749993.html
Copyright © 2020-2023  润新知