【Qt 学习笔记】Qt 中出现乱码的解释及讨论

简介: 【Qt 学习笔记】Qt 中出现乱码的解释及讨论


  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt 中出现乱码的解释及讨论

文章编号:Qt 学习笔记 / 06



一、为什么会出现乱码

1. 在计算机中汉字占几个字节?

在这里,考大家一个问题。在计算机中,汉字占几个字节?

回答这个问题的前提条件是当前中文编码使用的是哪种方式(字符集)

常见的字符集:ASCII、UTF-8、GBK、UTF-16

2. 字符集

字符集是一组字符的集合,用于在计算机系统中表示和处理文本数据。字符集通常由一系列字符编码组成,每个字符编码对应一个唯一的数字值。常见的字符集包括ASCII、Unicode和UTF-8等。字符集决定了可以在计算机系统中表示的字符范围和编码方式。不同的字符集支持不同的字符和字符编码,因此在处理文本数据时,需要使用相应的字符集来正确地解析和显示文本。

2.1 ASCII 码表

ASCII码表(American Standard Code for Information Interchange,美国信息交换标准代码)是一种以十进制数字表示的字符编码,共有128个字符编码,包括控制字符、标点符号、数字和字母等。

2.2 UTF-8

UTF-8是一种可变长度的字符编码方式,它可以用来表示世界上几乎所有的字符。它是Unicode标准的一种实现方式,通过使用1到4个字节来表示不同的字符。UTF-8编码的优点是兼容ASCII编码,对于ASCII编码中的字符使用一个字节表示,而对于其他非ASCII字符则使用多个字节表示。这使得UTF-8能够在保持兼容性的同时,使用较少的字节数来表示字符,节省了存储空间。UTF-8广泛用于互联网传输和存储文本数据的编码方式。

2.3 GBK

GBK是一种字符编码方式,全称为"Guo Biao Kuo Zhan",是中国国家标准局制定的一种字符编码规范。它在ASCII基础上进行了扩展,使用双字节表示一个字符,兼容ASCII编码,可以表示汉字以及其他特殊字符。GBK编码共收录了21003个汉字和图形符号。在GBK编码中,一个汉字占用两个字节,每个字节的范围都是0x81~0xFE。


二、出现乱码的几种原因

乱码的常见原因:编码方式不匹配所导致的

Qt中出现乱码问题的原因可能有多种,以下是一些常见的原因:

  • 字符编码不一致:在Qt中,文本通常以Unicode编码表示,而其他库或组件可能使用不同的字符编码。如果在不同编码间进行转换不正确或丢失了一些信息,就会导致乱码问题。
  • 字符编码设置不正确:Qt提供了一些函数用于设置全局字符编码,在处理文本时,如果没有正确设置编码,也会导致乱码问题。
  • 字体设置不正确:如果在显示文本时使用了不支持的字符集或者字体,就会导致乱码问题。
  • 文本文件格式不正确:如果读取的文本文件格式不正确,比如使用了不支持的编码或者文件被损坏,也会导致乱码问题。
  • 字符串截断或缺失:如果在处理文本时,不小心截断了或者丢失了一些字符,也可能导致乱码问题。
  • 系统环境设置不正确:如果系统的语言和区域设置不正确,也会导致乱码问题。

三、解决乱码问题的方法

  • 确保字符编码一致,尽量采用Unicode编码;
  • 设置正确的字符编码和字体;
  • 使用正确的文本文件格式;
  • 避免字符串截断或缺失;
  • 确保系统环境设置正确。

四、查看Qt文件的编码方式

  1. 右键点击文件,选择在Explorer中显示
  2. 选中文件右键,点击编辑
  3. 在记事本中的右下角显示,当前文件的编码格式(注意:显示UTF-8,说明这个文件是UTF-8编码。如果显示ANSI,则说明这个文件是GBK编码)

目录
相关文章
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
642 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
|
3月前
|
开发者
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
207 4
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
744 4
|
3月前
|
数据安全/隐私保护
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
389 4
|
3月前
|
搜索推荐 C++
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
82 4
|
3月前
|
API UED
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
405 4
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
271 3
|
3月前
|
数据可视化
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
83 3
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
554 3
|
3月前
【Qt 学习笔记】Qt窗口 | 对话框 | Qt对话框的分类及介绍
【Qt 学习笔记】Qt窗口 | 对话框 | Qt对话框的分类及介绍
129 3