json 数值打印中文乱码
时间: 2023-07-25 22:10:52 浏览: 99
在 `nlohmann::json` 库中,如果你将 `std::string` 类型的值作为 JSON 对象的成员变量或数组元素保存,并且这个字符串中包含中文字符,那么在将这个 JSON 对象或数组输出为字符串时,可能会出现中文乱码的情况。
解决这个问题的方法是设置输出编码,代码如下:
```c++
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main()
{
json j;
j["name"] = "张三";
j["age"] = 18;
std::cout << j.dump(" ", " ", false, json::error_handler_t::ignore) << std::endl;
return 0;
}
```
在上述代码中,我们在 `j.dump()` 函数中添加了一个参数 `encoding`,它指定了输出字符串的编码方式。在这里,我们将编码方式设置为 `" "`,即输出字符串中使用空格分隔每个 JSON 对象的成员变量或数组元素。同时,我们将最后一个参数 `error_handler` 设置为 `json::error_handler_t::ignore`,以忽略任何输出错误。
如果你的编码方式不是 UTF-8,你需要将 `" "` 替换为对应的编码方式,例如 `"GBK"` 或 `"GB2312"` 等。
阅读全文