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


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

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

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

文章目录

  • Qt 中出现乱码的解释及讨论
    • 一、为什么会出现乱码
      • 1. 在计算机中汉字占几个字节?
      • 2. 字符集
        • 2.1 ASCII 码表
        • 2.2 UTF-8
        • 2.3 GBK
    • 二、出现乱码的几种原因
    • 三、解决乱码问题的方法
    • 四、查看Qt文件的编码方式


一、为什么会出现乱码

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编码)
    在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/524064.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx配置之localhost和反向代理

文章目录 第一步、查看安装位置和配置文件第二步、web服务器设置第三步、localhost 指令第四步、设置反向代理 清明假期,在家练习Nginx配置,在前期【 linux环境下安装配置nginx代理服务器】已经完成nginx环境搭建,本期主要实践web服务器&…

副业选择攻略:如何找到最适合自己的那一个?

大家好,我是木薯。今天有个新人伙伴来咨询客服:新手适不适合在水牛社上做副业?什么样的副业适合自己? 这种问题其实对我们来说已经见得太多太多了,归其原因是因为自己对副业没有一个清晰的自我认知,从而感觉…

阿里千问大模型 Qwen1.5 开源 32B 模型,将开源进行到底!!!

阿里开源的千问系列模型,一直受到业界好评,之前版本有0.5B、1.8B、7B、14B、72B,但一直缺少的30B级别开源模型,这也一直是一个遗憾。 怎么说呢?72B模型太大,很多人用不起来,无论是微调&#xf…

基于JAVA+SSM+微信小程序+MySql+前后端分离的图书捐赠管理系统设计与实现

一、项目背景介绍: 在当今社会,图书捐赠是一种普遍而有益的行为,旨在促进阅读、教育和知识传播。图书捐赠可以帮助改善教育资源不足的地区、学校和社区的阅读环境,提供更多的学习机会和知识获取途径。随着互联网和移动技术的发展&…

pytorch交叉熵

目录 1. Entropy2. 交叉熵3. 二分类4. 为什么分类问题使用交叉熵5. 代码示例 1. Entropy Entropy中文是熵的意思,它代表一种不确定性,不确定性越高惊喜度也就越高。 如上图,假设熵代表中奖概率,当熵为2 的中奖概率为1/4没什么惊…

sharding‐jdbc之分库分表(mysql主从同步的数据库安装和使用)

水平分表 创建基础工程.. 引入sharding‐jdbc的maven依赖包 注意需要数据库连接池等依赖 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>sharding-jdbc-spring-boot-starter</artifactId><version>4.0.0-RC1&l…

1.0-spring入门

文章目录 前言一、版本要求二、第一个spring程序1.引入pom2.代码部分2.1 spring bean2.2 springContext.xml2.3 测试2.4 执行结果 总结 前言 最近想要系统的学习下spring相关的框架,于是乎,来到了B站(真是个好地方),spring会专门开一个专栏出来,记录学习心得,与大家共勉。 Spri…

51-37 由浅入深理解 Stable Diffusion 3

2024年3月5日&#xff0c;Stability AI公开Stable Diffusion 3论文&#xff0c;Scaling Rectified Flow Transformers for High-Resolution Image Synthesis。公司像往常一样承诺后续将开源代码&#xff0c;开源之光&#xff01;&#xff01;&#xff01; 在LDW潜在扩散模型论文…

缓存击穿以及解决方案

1.定义 缓存击穿问题也叫热点Key问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 问题描述&#xff1a;假设线程1在查询缓存之后&#xff0c;本来应该去查询数据库&#xff0c;然后把…

8、滑动窗口-无重复字符的最长子串

解析&#xff1a; 遍历 判断map是否包含当前字符&#xff0c;如果包含&#xff1a; 获取重复的index下标在哪里获取len长度重新设置L指针,其中L指针不回退&#xff0c;也就是如果这个重复值在L前面那就忽略&#xff0c;如果是在后面那就设置为index1。 代码如下&#xff1a; …

Java初始——IDEA-web的启动

Tomcat 文件夹作用 bin 启动 关闭的脚本文件 conf 配置 lib 依赖的jar包 logs 日志 temp 临时文件 webapps 存放的网站 Maven 1.在javaweb中&#xff0c;需要使用大量的jar包&#xff0c;手动导入 2.Maven 架构管理工具 核心&#xff1a;约定大于配置 必须按照规则 web idea-we…

Day16_IDEAJavaWeb项目下在WEB-INF添加jar包导致Tomcat无法启动的问题解决记录

0 起因 自己用的是Tomcat 9.0.69&#xff0c;老师用的是Tomcat 9.0.87。本以为都是9.0.x&#xff0c;差别不会很大&#xff0c;但是老师演示的时候他没导入mysql包查询数据库的servlet就不能运行&#xff0c;而我的却可以&#xff0c;于是问了GPT&#xff0c;得到以下答复。 …

【MATLAB源码-第180期】基于matlab的PTS,SLM,CPFilter三种降低OFDM系统的PAPR仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 限幅和滤波&#xff08;Clipping and Filtering&#xff09; 原理简介 限幅和滤波是一种基础且直观的方法&#xff0c;用于降低OFDM信号的PAPR。在限幅阶段&#xff0c;信号的幅度在达到设定阈值时会被削减&#xff0c;…

开发项目接单报价快速计算,报价量化程序

定制化开发&#xff0c;如何计算项目预算&#xff0c;是程序开发者头疼的一个问题。 项目费用谈得过低&#xff0c;就天天加班累死赚不到钱&#xff1b;谈得过高&#xff0c;会导致顾客流失&#xff0c;信誉受损。 项目费用量化可见是多么重要。 下面是一段量化的程序&#…

item_search-按关键字搜索淘宝商品:如何通过获取以下关键字、搜索类型、排序方式参数提升用户体验、优化营销策略、提高转化率

在淘宝购物的过程中&#xff0c;搜索功能无疑是用户与商品之间的重要桥梁。通过输入关键字&#xff0c;用户可以迅速找到所需的商品&#xff0c;而搜索结果的准确性和相关性则直接关系到用户的购物体验和满意度。因此&#xff0c;如何通过优化关键字、搜索类型和排序方式参数&a…

鸿蒙内核源码分析 (内存管理篇) | 虚拟内存全景图是怎样的

初始化整个内存 OsSysMemInitOsMainmain从 main() 跟踪可看内存部分初始化是在 OsSysMemInit() 中完成的。 UINT32 OsSysMemInit(VOID) {STATUS_T ret;OsKSpaceInit();//内核空间初始化ret OsKHeapInit(OS_KHEAP_BLOCK_SIZE);// 内核动态内存初始化 512K if (ret ! LOS_OK…

Centos7下docker删除容器与镜像

个人记录 查看容器 docker ps -a停止容器运行 docker stop jenkins卸载容器 docker rm jenkins查看镜像 docker images卸载镜像 docker rmi IMAGE ID查看容器与镜像是否卸载完毕 docker images docker ps -a

Vue基础知识:Vue路由——重定向,以及?(可选符)的使用

当网页打开时&#xff0c;url默认是/路径&#xff08;根路径&#xff09;&#xff0c;未匹配到组件时&#xff0c;会出现空白&#xff0c;为了解决这个问题 就要利用重定向 重定向&#xff1a;匹配path后&#xff0c;强制跳转path路径 重定向的语法&#xff1a; {path:匹配…

k8s安全控制、授权管理介绍,全网最新

3.ABAC 4.Webhook 5.Node 6.RBAC 三.Role解释 1.Role和ClusterRole 2.Rolebinding和ClusterBinding 3.Rolebinding和ClusterRole 四.准入控制 1.命令格式 2.可配置控制器 五.例子 1.生成签署证书 2.设置用户和上下文信息 3.为sulibao用户授权 一.Kubernetes安全控…

真实对比kimi、通义千问、文心一言的写代码能力,到底谁强?

&#x1f916;AI改变生活&#xff1a;最近都在说月之暗面的kimi的各项能力吊打国内其他大模型&#xff0c;今天我们真实感受下 kimi、通义千问、文心一言的根据需求写代码的能力。 测评结果让人震惊&#xff01; kimi kimi编程过程 我们先看一下热捧的月之暗面的kimi模型。 …