【问题标题】:UTF-8 in Jsoncpp LibJsoncpp 库中的 UTF-8
【发布时间】:2020-09-14 18:04:03
【问题描述】:

我在项目中使用 jsoncpp 库时遇到问题。我尝试读取、编辑和编写本地 json 文件。我遇到的问题是我找不到将写入/读取编码为 UTF-8 的方法。它总是使用 ASCII。这是一个示例 Json 文件:

{"Name": "Müller"}

我是这样使用的:

std::ifstream ifs;
std::ofstream ofs;
Json::CharReaderBuilder builder;
Json::StreamWriterBuilder wbuilder;
const std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
Json::String errs;

parseFromStream(builder, ifs, &root, &errs);

string name = root["Name"].asString();
//if i try to use this data in my wxWidgets Gui now, the Output would be sth like M�ller

root["Straße"] = "Ahornweg 5";

writer->write(root, &ofs);

如果我这样使用它,jsonfile 将如下所示:

{ "Stra\u00dfe": "Ahornweg 5", "Name":"M�ller"}

希望有人可以帮助我。感谢您的每一次帮助。

【问题讨论】:

  • Stra\u00dfe 正是那个can help me 与什么?
  • 是的,它的值相同。但编码不同。我在 Jsonfile 中想要的是 Straße 而不是 Stra\u00fde。因为我无法使用 root [“Straße”] 再次访问它。我需要用 root["Stra\u00dfe] 打开它,这不适用于这个确切的项目
  • 您可能需要使用不同的库。我在 jsoncpp 文档中没有看到任何关于编码的内容。我阅读了 rapidjson 的文档,其中包含有关编码的信息,但即便如此我也无法判断它是否符合您的要求。

标签: c++ json jsoncpp


【解决方案1】:

对于将来想知道的任何人,阅读这个问题,我花了一些时间,因为我是编码的初学者,但这与您在 IDE 中使用的编码有关。确保它真的是 UTF-8!

【讨论】:

    猜你喜欢
    • 2012-06-26
    • 2011-02-06
    • 2014-09-23
    • 2021-08-01
    • 2012-10-08
    • 2012-08-18
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多