文字檔案編碼
首先,計算機內部只能儲存二進位制資料,即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國際化"。