文本文件编码

首先,计算机内部只能存储二进制数据,即1和0的bit位。所以,我们要让计算机显示各种字符,就必须要对字符进行编码,让每一个字符对应一个数字编码。而之所以会造成乱码现象,是因为当初创建文件的时候采用的编码方式,和打开时的编码方式不一样,这样的对应关系就乱了,于是我们看到的就是乱七八糟的。
--------------------- 
原文:https://blog.csdn.net/charles_neil/article/details/70942840 

文本文件编码有四种

ANSI:系统预设的标准文字储存格式。

UTF-8:UTF意为通用字集转换格式(Universal Character Set Transformation Format),UTF-8是Unicode的8位元格式。如果使用只能在同类位元组内支持8个位元的重要资料一类的旧式传输媒体,可选择UTF-8格式

Unicode:世界上所有主要指令文件的联集,包括商业和个人电脑所使用的公用字集。当采用Unicode格式储存文件时,可使用Unicode控制字符辅助说明语言的文字覆盖范围,

Unicode big endian:在Big-endian处理器(如苹果Macintosh电脑)上建立的Unicode文件中的文字位元组(存放单位)排列顺序,与在Intel处理器上建立的文件的文字位元组排列顺序相反。

https://blog.csdn.net/kaibing/article/details/78199743

2、

源码字符集(the source character set):源码文件是使用何种编码保存的。
       执行字符集(the execution character set):可执行程序内保存的是何种编码(程序执行时内存中字符串编码)。
源码字符集很容易理解,就是我们源代码的编码。为了我们的代码能够跨平台,源文件要保存为带 BOM 的 utf-8

3、

问题:QString str( QObject::tr("中文") ) 能用么?

 答案:不能,tr( ) 中只能是英文。

 因为QT5版本取消了QTextCodec::setCodecForTr()方法。并且你要明白QObject::tr是干嘛的。它是用于程序国际化使用的,也就可以界面文字翻译成不同的语言。你如果使用QObject::tr,你应该全部用英文表示,然后后面借助Linguist翻译成中文,就不会乱码了。详细请搜索“qt国际化"。

猜你喜欢

转载自blog.csdn.net/wangtingze123/article/details/85337612