VS+QT编译环境中字符乱码问题详解

这篇具有很好参考价值的文章主要介绍了VS+QT编译环境中字符乱码问题详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


在解释字符乱码问题之前,我们需要先理清一些基本概念

1 编码字符集与字符编码方式

编码字符集

编码字符集是所有字符以及对应代码值的集合。编码字符集中的每个字符都对应一个唯一的代码值。常见的编码字符集:ASCII字符集、GBXXXX字符集、BIG5字符集、Unicode字符集等。

字符编码方式

编码字符集中只规定了字符的代码值并未规定具体如何存储,字符编码方式解决了字符在计算机中如何存储的问题,它是将编码字符集中的字符代码值转换为实际的存储字节序列的一种映射规则。常见字符编码方式:ASCII编码、GBXXXX编码、BIG5编码、UTF-8编码、UTF-16编码、UTF-32编码等。每种编码字符集至少对应一种字符编码方式,也可以对应多种编码方式。

什么是字符的编码与解码?
编码就是把⼀个字符编码成二进制码存起来的方式,而解码就是把这个二进制码按照原本编码的规则还原成原来的字符。

源字符集: 源文件字符集是指源文件保存时按源字符集编码方式编码后的字符集。VS2019源字符集编码格式默认是GBK格式,在利用VS编写代码时,源代码会自动编码为GBK字符集。

执行字符集: 程序运行时所使用的字符集,编译器会将源字符集先按照源字符集编码方式进行解码,再将解码后得到的字符按照执行字符集编码方式编码为执行字符集。执行字符集一般默认使用Windows系统本地字符编码,若是简体中文系统,则是GBK或GB2312字符集。

2 字符乱码原因

在编程中我们给某个函数输入中文字符串的时候,在运行的时候中文字符串往往就会变成乱码,这是因为编码方式与解码方式不一致造成的

例:
VS+QT编译环境中,如果直接将中文字符串传给QT函数时,会出现乱码:

QString s("你好");//乱码
qDebug() << "路漫漫其修远兮";//乱码

原因在于这些中文字符串被GBK编码为源字符集,编译器会先采用GBK将这被GBK编码的源字符集解码,再用GB2312编码为执行字符集,而Qt5内部采用Unicode字符集,UTF-16编码,QT中的函数会将执行字符集使用UTF-8解码,再使用UTF-16编码为unicode字符集,QString内部使用UTF-8对执行字符集进行解码的时候,与执行字符集编码格式不一致,肯定会出现乱码现象。

为什么英文字符就不会出现乱码现象呢?

英文字符通常都是ASCII字符编码,常见的字符编码都会以某种形式“兼容”ASCII编码,而我们接触比较多的UTF-8和GBK则是完全兼容ASCII,也就是ASCII编码的数据,在UTF-8、GBK中会是一样的数字形式(一个字节)。即
AB在ASCII编码中对应的是0x41和0x42,在GB2312和UTF-8中还是0x41和0x42,所以对于AB这两个字符用GB2312编码为0x41和0x42后,采用UTF-8再进行解码,得出来的仍然是AB,所以不会出现乱码。

3 字符乱码解决方案

(1)使用QStringLiteral宏

从“字符串常量”创建QString对象

qDebug() << QStringLiteral("路漫漫其修远兮");

QStringLiteral宏它只能处理常量。

(2)使用fromLocal8Bit()函数

fromLocal8Bit是Qt 中QString 类的一个成员函数,用于将使用本地编码的字符串转换为 QString 对象的内部 Unicode编码。

qDebug() << QString::fromLocal8Bit("路漫漫其修远兮");

使用QStringLiteral宏和fromLocal8Bit()函数输出的字符串还带有双引号:

VS+QT编译环境中字符乱码问题详解,Qt,计算机网络,qt,开发语言

使用下面的这两个方法可以解决这种问题。

(3)使用#pragma execution_character_set(“utf-8”)

源程序中加上如下指令,将源文件的可执行字符集编码方式设置为utf-8

#pragma execution_character_set("utf-8")
 qDebug() << "路漫漫其修远兮";

(4)使用u8关键字

C++17到来后出现了u8关键字,表示一个字符串的可执行字符集编码方式是UTF-8编码

qDebug() << u8"路漫漫其修远兮"

VS+QT编译环境中字符乱码问题详解,Qt,计算机网络,qt,开发语言文章来源地址https://www.toymoban.com/news/detail-810086.html

到了这里,关于VS+QT编译环境中字符乱码问题详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS2019 + Qt : setToolTip的提示内容出现乱码

    在使用 setToolTip() 时, 标签提示只有英文是对的,中文是乱码! 应该是编码出了问题。默认情况下,Qt使用的是UTF-8编码,我就查看了一下这个在VS2019中cpp文件的编码: 可以看到,编码是ANSI,明显不对! 解决方法一: 我就转换了一下编码,转为UTF-8. 然后编译,中文就不再是

    2024年02月12日
    浏览(38)
  • QT学习笔记-QT5.15 + MSVC编译套件时编译日志及运行日志日志乱码解决

    操作系统:Windows10专业版 QT版本:QT5.15.2 QtCreator版本:9.0.2 MSVC版本:MSVC 2019 64bit C/C++编译器:Microsoft Visual C++ Compiler 17.1.32328.378(amd64) 调试器:Auto-detected CDB at C:Program FilesWindows Kits10Debuggersx64cdb.exe 文件编码的设置都是采用的默认值UTF-8,如下图: 当qt的项目采用MSVC构建套

    2024年02月14日
    浏览(44)
  • QT5 creator创建项目移植VS2015时一些问题的解决方案(MSB307错误、.ui无法编译)

    将QT5项目移植VS2015工程的方案中,我目前体验过的最便捷的一条路线是: 1.利用QT5 Creator创建项目(不需要进行界面设计),得到XXX.h /XXX.cpp /XXX.ui (暂时不需要编译自动生成的ui_XXX.h); 2.复制以上文件到VS工程源码目录下,.ui与头文件目录相同,并进行CMAKE编译、项目生成(

    2024年02月15日
    浏览(39)
  • qt qtcreator qt+vs 编译器

    对于一个新手而言,基本体会如下: Qt Creator Qt Creator优势 可以实现Ui和代码无缝切换。(VS不行) 对于汉字的支持更好 提示功能做的更好。 比如:#include等,敲出#inc即有提示。 qmake非常好用 项目管理更方便,可以添加pri之类的来管理子模块 Qt Creator劣势(IDE本身巨大劣势)

    2024年02月08日
    浏览(49)
  • QT:使用VS搭建qt环境

            在 Windows 平台下,使用 Visual Studio 搭建基于 CMake 的 QT 开发环境可以使开发者更加灵活地控制和管理 QT 项目的构建和配置。此过程需要在 Visual Studio 中安装并使用 CMake 工具,然后在 CMakeLists.txt 文件中添加适当的 QT 配置信息,以便编译、链接和生成 QT 项目。   

    2024年02月07日
    浏览(25)
  • 记录一次QT乱码问题

    在敲陆文周的书《QT5开发及实例》的示例代码时,出现乱码,如下图所示 具体代码如下 在阅读csdn大佬急支糖浆的文章后,理解了 源文件码字符集,执行字符集等概念。 源文件编码字符集:源文件保存时的编码方式,如gbk,utf-8等。 执行字符集:编译器编译后的可执行文件

    2024年01月24日
    浏览(27)
  • VS2022编译安装Qt6.5源码

    包括安装VS2022,Windows SDK,Python3,这里就不再一一介绍了,需要说明的一点是如果要编译 QtWebEngine 和 QtPdf 两个组件的依赖问题,当然如果不需要,也可以不管它,则不会编译。 python库 html5lib : 使用 pip install html5lib 安装。 gperf、bison、flex 如果安装有Qt 5的Windows版本,比如

    2024年02月04日
    浏览(58)
  • Qt安装和vs搭建Qt环境

    想要使用Visual studio进行Qt项目开发,首先要安装Qt开发工具,下面将分为两部分展示Qt开发工具的安装和Visual studio怎么样配置Qt进行Qt项目的开发,安装Qt插件安装vsaddin,Qt Visual Studion Tools的安装,此文章介绍Qt 5.14.1版本的安装 一、安装文件下载 二、安装 双击exe运行 三、设置

    2024年04月11日
    浏览(22)
  • 解决Qt Creator中文乱码的问题

    使用QStringLiteral()包裹中文字符串

    2024年02月01日
    浏览(27)
  • VS配置Qt环境

    Qt程序的开发不仅可以使用原生的Qt Creator,也可以使用Visual Studio 想使用VS进行Qt程序的开发,需要安装Qt的插件,下面看详细步骤 地址:http://download.qt.io/archive/   下载完毕后会得到后缀名为“vsix”的工具 直接运行这个插件(前提是你电脑上已经安装了vs) 安装过程等待.

    2024年02月08日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包