Qt學習筆記(五)QString 字串

weixin_34185364發表於2018-04-17

1、字符集

字元 Character:文字元號。
字符集 Charset:字元的集合,規定一系列字元與數字的關係(編碼)。

字符集都是由一些組織制定和釋出的,例如ISO/IEC就負責制定字符集。

每個字符集都有一個標準編號,例如,ASCII字符集的編號為ISO/IEC 646(即,由ISO/IEC釋出第646號標準文件)。

2、拉丁字符集

拉丁字符集,收錄了歐洲各個國家的字元,例如,希臘字母Aα Bβ。

拉丁字符集的編號為ISO 8859系列,例如,ISO8859-1字符集,也就是Latin-1,是西歐常用字元,包括德法兩國的字母。ISO8859-2字符集,也就是Latin-2,收集了東歐字元。

注意:拉丁字元的總數遠遠超過了256個,無法用一個char型表示,得用2個位元組表示。所以,即使不使用中文,外文字元的表示也是有問題的。

char a = ‘α’;// 這就有問題了

問題的原因是相同的,無法用一個位元組來表示一個字元。
ASCII碼:0-127之間,最高位0,拉丁字元:最高位1。以此來區分。

3、中文字符集

GB2312,中文簡體國標碼(6763個漢字);
GBK,擴充套件中文GB編碼(相容GB2312);(工具UltraEdit)
GB18030,用1-4個位元組編碼,容量超大;
BIG5,中文繁體編碼;
CJK,中日韓大字符集編碼;
Unicode,統一碼,用0-0x10FFFF來對映全球各國的語言文字。

Unicode編碼方案:
①UTF-32編碼:每個字元用一個int來表示;
②用1-2個short來表示一個字元;
③UTF-8編碼:用1-4個位元組來表示一個字元(比較節省空間)

注意:windows中.cpp檔案中的漢字都是以GBK格式編碼的,其他平臺可能會不一樣。所以,如果想以Unicode格式輸出,需通過某些方法來轉換。

4、QString相關轉換

Qt是一個跨平臺的框架,它封裝了一個QString類來代表字串,是一個Unicode16編碼的類。

void MyWin3::TestBtnClicked() {
    QString str = "哈哈";
    ui.lineEdit->setText(str);
}

11384618-bf4da3057342e8b8.png
image.png
void MyWin3::TestBtnClicked() {
    QString str = QString::fromLocal8Bit("哈哈");
    ui.lineEdit->setText(str);
}
11384618-16cf008540c44abe.png
image.png

5、程式釋出注意事項

當程式中帶有中文轉換處理時,需要將Qt使用的文字編碼庫一同釋出。
Windows下Qt應用程式:
①找到Qt的編碼庫:C:\x.x.x\plugins\codercs
②拷貝codecs資料夾到工程exe檔案所在目錄下。
③把vs的執行時庫也要拷貝到cedecs目錄下。(mvcm/mvcp/mvcr)

相關文章