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

【Qt】使用QString的toLocal8Bit()导致的问题

问题

使用Qt发送一个Http post请求的时候,服务一直返回错误和失败信息。同样的url以及post参数,复制黏贴到postman里就可以发送成功。就感觉很神奇。

原因

最后排查出原因是因为参数中含有汉字而导致的编码问题。

在拼接post参数时,使用了toLocal8Bit()来将QString转为QByteArray。而toLocal8Bit(),会将QString对象转换为本地8位字符集编码的QByteArray对象。根据不同平台,可能转换的编码方式不同,在中文Windows系统中,toLocal8Bit()会将QString对象转换为GB2312编码的QByteArray对象。因为服务部署在Linux环境下,所以应该是这里导致的问题。

解决

改为使用QJsonDocument组织json字符串,调用它的toJson()接口,直接转换成QByteArray,默认是Utf-8编码的。

或者另一种方式是,直接将拼接的字符串,调用toUtf8()接口,应该也是可以的。

http://www.lryc.cn/news/487420.html

相关文章:

  • Android上运行Opencv(TODO)
  • 动态IP黑白名单过滤的设计与实现(上篇设计思想)
  • LeetCode 力扣 热题 100道(五)最长回文子串(C++)
  • Docker--Docker Registry(镜像仓库)
  • maven手动上传jar到私服仓库:mvn deploy:deploy-file命令
  • 【机器学习】机器学习中用到的高等数学知识-1.线性代数 (Linear Algebra)
  • 无插件H5播放器EasyPlayer.js网页web无插件播放器选择全屏时,视频区域并没有全屏问题的解决方案
  • Idea中创建和联系MySQL等数据库
  • 【pytest】pytest注解使用指南
  • 在Unity中使用Epplus写Excel
  • 初识算法 · 模拟(2)
  • 【Java面试】—— 创建线程池的两种方式(执行流程、拒绝策略)(详细)
  • Docker在微服务架构中的应用
  • 苹果ASA归因对接以及API接入
  • Git常用操作学习
  • 2.5D视觉——Aruco码定位检测
  • 【PSQLException: An I/O error occurred while sending to the backend.】
  • 图像基础算法学习笔记
  • 【Elasticsearch】01-ES安装
  • 网络性能测试
  • docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
  • esp32c3开发板通过micropython的mqtt库连MQTT物联网消息服务器
  • OceanBase 升级过程研究(4.2.1.6-4.2.1.8)
  • ubuntu下怎么设置机器程序开机自启?
  • Cesium 相机系统
  • 数据结构(基本概念及顺序表——c语言实现)
  • ZYNQ程序固化——ZYNQ学习笔记7
  • labview使用报表工具从数据库导出数据
  • #define定义宏(2)
  • CentOS网络配置