当前位置: 首页 > 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.lryc.cn/news/439117.html

相关文章:

  • Unity中InputField一些属性的理解
  • 【webpack4系列】webpack构建速度和体积优化策略(五)
  • 从零开始搭建 PHP
  • 【数据结构】8——图3,十字链表,邻接多重表
  • eth-trunk 笔记
  • 通信工程学习:什么是接入网(AN)中的TF传送功能
  • 【JavaEE】IO基础知识及代码演示
  • 安卓13系统导航方式分析以及安卓13修改默认方式为手势导航 android13修改导航方式
  • [技术杂谈]暗影精灵8plus电竞版台式机安装和使用注意
  • 【加密算法基础——AES解密实践】
  • Spring01
  • gogps 利用广播星历解算卫星位置matlab函数satellite_orbits详细注解版
  • Oracle按照某一字段值排序并显示,相同的显示序号
  • 【Java基础】String详解
  • cmd命令
  • 《中文Python穿云箭量化平台二次开发技术11》股票基本信息获取分析及应用示例【前十大股东占股比例提取及分析】
  • OSINT技术情报精选·2024年9月第1周
  • 51单片机应用开发---二进制、十六进制与单片机寄存器之间的关系(跑马灯、流水灯实例)
  • 信息安全工程师(6)网络信息安全现状与问题
  • 亚数TrustAsia亮相第十四届智慧城市与智能经济博览会,入围“2024数据要素创新应用优秀成果”!
  • Linux基础开发环境(git的使用)
  • VS Code终端命令执行后老是出现 __vsc_prompt_cmd_original: command not found
  • 春天(Spring Spring Boot)
  • Oracle EBS AP预付款行分配行剩余预付金额数据修复
  • 【鸿蒙】HarmonyOS NEXT星河入门到实战7-ArkTS语法进阶
  • Java设计模式—面向对象设计原则(六) ----->合成复用原则(CRP) (完整详解,附有代码+案例)
  • java坏境搭建
  • C#中判断socket是否已断开的方法
  • Python编程 - 异常处理与文件读写
  • 【C++】c++ 11