当前位置: 首页 > news >正文

nlohmann::json中有中文时调用dump转string抛出异常的问题

问题描述

Winodows下C++开发想使用一个json库,使用的nlohmann::json,但是遇到json中使用中文时,转成string,会抛出异常。

	nlohmann::json contentJson;contentJson["chinese"] ="哈哈哈";std::string test = contentJson.dump();

解决方案

先将GBK编码的中文转成utf8编码,再赋值给json就可以了。

//转码 GBK编码转成UTF8编码
static std::string GBKTOUTF8(const std::string& strGBK)
{std::string strUtf8;int len = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);wchar_t* wszUtf8 = new wchar_t[len];memset(wszUtf8, 0, len);MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, wszUtf8, len);len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL);char* szUtf8 = new char[len + 1];memset(szUtf8, 0, len + 1);WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL, NULL);strUtf8 = szUtf8;delete[] szUtf8;delete[] wszUtf8;return strUtf8;
}//测试
nlohmann::json contentJson;
std::string  temp = "哈哈哈";
contentJson["chinese"] = GBKTOUTF8(temp);
std::string test = contentJson.dump();
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

需要注意的是,这里在windows Vusial Studio debug模式下,看到GBK转成utf8之后的结果,是乱码,但是上传到服务器,查看的中文时正常的。


http://www.mrgr.cn/news/26051.html

相关文章:

  • 3.大语言模型LLM的公开资源(API、语料库、算法库)
  • 1688商品详情API返回值中的售后保障与服务信息
  • 【限流算法】常见的限流算法有哪些,怎么做限流操作
  • Bio-Linux-shell详解-1-从0开始
  • 基于Prometheus和Grafana的现代服务器监控体系构建
  • 回顾解析:Mirai僵尸网络及其持续威胁
  • Boot header格式描述详细信息。CSU DMA用于数据传输。安全流开关允许数据移动。PL配置通过PCAP接口。PL bit流包含设备配置数据。
  • 隧道代理IP的去重计算与应用探索
  • java 通过文件下载地址读取文件内容
  • CSP 2023 提高级第一轮单项选择题解析
  • linux系统管理面板1panel
  • 配多少?现货黄金个性化投资方案
  • 65. 不用加减乘除做加法【难】
  • 场外个股期权是不是也不会爆仓?
  • python学习第十节:爬虫基于requests库的方法
  • Vue3项目打包报错-内存溢出解决方法
  • 冯·诺依曼结构计算机的优势和劣势
  • windows下ardusub仿真
  • 为什么总是分心?(影响专注力的5因素)
  • LeetCode:2398. 预算内的最多机器人数目 双指针+单调队列,时间复杂度O(n)