QT 字符乱码的原因
1,Qt Creator的编辑器使用的是utf-8来读取文本文件,而Visual Studio保存文件时默认采用的是本地编码(GB2312)
2,QString内部采用的是 Unicode
3,乱码产生原因:用什么 [编码规则] 保存为何种形式的二进制段,就用同样的[编码规则]来读取。自然就不会出现乱码了。
4,unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。它的实现方式有如下:
UTF-8 是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-16 用二个字节存储一个字符。
UTF32 用四个字节存储一个字符。
vs里面的unicode字符集就是采用的utf-16
5,QString 内部是以 16 位的 QChar 来存储(Unicode 的一种,但不是 utf-8,即utf-16)
6,QByteArray(即字符数组) 既可以用来存储原始的字节,包括’\0’,也可以用来存储传统的 8-bit 的以’\0’结尾的字符串。使用QByteArray比使用普通的const char* 更方便。
7,QChar 在 Qt 中,Unicode 字符是没有任何标记或结构的 16 位实体,即unsigned short
8,QString转入转出函数,即生成QString和由QString生成其他字符(如char)的函数
toUtf8是输出UTF-8编码的字符集
toLatin1 是输出Latin1字符集,由于汉字不在latin1字符集中,所以用此函数转出汉字结果无意义(即会出现问号)
Local8bit是本地操作系统设置的字符集编码,一般为GB2312.(ANSI码(American National Standards Institute),在中国,这里理解成GB2312即可)
9,QT下面QString中转char,如下ch则不会出现乱码
QString aa= "我是汉字aaa";char* ch;QByteArray ba = aa.toUtf8(); // mustch=ba.data();
QT 字符乱码的原因相关推荐
- 中文字符乱码的原因及解决办法
中文字符乱码的原因及解决办法 java的内核是Unicode的,也就是说,在程序处理字符时是用Unicode来表示字符的,但是文件和流的保存方式是使用字节流的.在java的基本数据类型中,char是U ...
- Qt中文乱码原因及解决方案
本文主要分析了基于windows系统msvc2013编译器的Qt中文乱码. 概念 字库表:是一个系统支持的文字,符号,数字的集合. 编码字符集(字符集):我们平时所说的字符集就是这个,计算机以二进制的 ...
- qt中文乱码原因分析及解决方案
首先说明几个基础概念 UTF-8 BOM 和 UTF-8.BOM在文件头位置占三个字节,用来标识UTF-8编码,软件通过BOM来识别这个文件是否是UTF-8编码. 源码字符集.源码文件使用某种编码格式 ...
- 字符编码、QString编码、Qt界面乱码问题总结
目录 一.术语解释 1.编辑器(editor) 2.编译器(compiler) 3.源文件字符编码 4.执行文件字符编码 5.Unicode 二.Qt中的字符串 1.char*和std::string ...
- Qt中文乱码解决思路
最近项目中遇到不少的Qt中文乱码的问题,主要原因是客户的需求比较多,Qt版本有用4的版本的也有用5的版本,并且还有windows与linux跨平台的需求. 经常出现个问题是windows的解决了,源代 ...
- 彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)
尊重作者,支持原创,如需转载,请附上原地址:https://blog.csdn.net/libaineu2004/article/details/19245205 一.Qt Creator环境设置 1 ...
- 完美解决QT中文乱码问题
原因 归结一句话来说明就是:源码字符集 和 执行字符集编码不统一!即IDE中编辑的代码编码 和 生成的运行程序编码 不统一,必然会出现乱码现象. 必备知识 这篇主要提供解决的方法,原理很有必要解决后在 ...
- mysql保存中文乱码的原因和解决办法
当你遇到这个mysql保存中文乱码问题的时候,期待找到mysql保存中文乱码的原因和解决办法这样一篇能解决问题的文章是多么激动人心. 也许30%的程序员会选择自己百度,结果发现网友已经贴了很多类似 ...
- oracle字符乱码的解决方法
原因分析: 客户端字符集就是为了让数据库知道我们传递过去的字符是属于哪种字符集,以便于Oracle在存储字符时进行相应的编码映射(查看客户端字符集通过查找注册表中的NLS_LANG键). 在客户端查询 ...
- php连接mysql乱码原因_PHP连接MYSQL出现乱码的原因与解决办法
PHP连接mysql出现乱码的原因与解决方法 解决MySql数据库乱码的一个首要前提是保证 数据库+数据表+前端显示 编码一致,国内项目一般统一设定为GB2312或GBK,而国际化项目则一般使用utf ...
最新文章
- 启动和停止MySQL服务
- python切片语法-Python新手学习基础之数据类型——字符串的切片截取
- prepare 和 row_count()一起使用的误区
- Codeforces 991E. Bus Number (DFS+排列组合)
- 用 Go 操作 MySQL 的 200 万数据时应该怎么搞?
- 学生信息的电子化管理考试题
- POJ 2386 Lake Counting DFS水水
- mysql启动错误排查-无法申请足够内存
- 华为手机系统更新提示网络连接到服务器失败,华为网络正常app连不上网络
- 线程(Thread)和异常
- 嵌入式linux驱动开发答辩问题,嵌入式Linux驱动工程师/BSP开发工程师面试笔试题集锦...
- HihoCoder 1838 贪心
- 实对称矩阵的相似对角化
- 多轮对话之对话管理(Dialog Management)
- 比较好的java网站
- hdu5510Bazinga
- 宁芝普拉姆键盘说明书以及键盘校验软件
- [ 代码审计篇 ] 代码审计思路 详解
- 2022中元节前后几天不出门?前三天后三天不能出门是真的吗?
- 兔子与兔子 字符串hash
热门文章
- iphone双重认证关闭不了怎么办_Apple id双重认证,没有关闭的选项?
- 读书笔记 - 自控力
- 计算机英语第二版期末翻译试题答案,开放英语I期末翻译测试题
- c8500刷机 转帖
- OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发
- android锁屏了怎么办,安卓手机被恶意锁屏该怎么办
- bios 微星click_微星发表全新搭载图形化『Click BIOS』主机板 采用最新UEFI架构 迎接全图形化BIOS调教新时代...
- linux 中cp是什么意思,linux系统cp是什么
- 医学图像预处理之CT成像原理
- 一分钟教会你怎么批量压缩图片大小,快进来学习