qstring 字串和中文字元編碼
qt內部的編碼方式 unicode (utf-16)
linux平台預設使用:utf-8
windows平台預設使用:gbk2312/gbk/gbk18030
qstring內部使用unicode編碼,使用雙引號的字串,通過轉換建構函式,可以將utf-8編碼字元轉換為unicode的使用,也可以正常顯示utf-8編碼的字串。
早期的qt4版本不會做這樣的轉換,那麼顯示中文將亂碼,獲取在windows開發qt程式,一般使用gbk的編碼,顯示中文也將是亂碼。
vmware虛擬機器共享與ubuntu共享資料夾:
【虛擬機器】-【設定】-【選項】-【共享資料夾】-【新增】-新建目錄file
ubuntu虛擬系統中vi終端下訪問windows共享目錄路徑:
"/mnt/hgfs/..." /mnt/hgfs/file
【注】最好不要用中文路徑,使用英文路徑。
如果出現"亂碼解決方案":
qtextcodec類可以實現將其他編碼方式(gbk)轉換成(unicode)。
eg:// "中文字串" 直接使用將是亂碼
qbytearray encodedstring = "中文字串";
// 構建編碼器物件,引數為當前所使用的編碼方式
qtextcodec *codec = qtextcodec::codecforname("gbk");
// 使用編碼物件呼叫成員函式 tounicode 完成轉換後,就可正常顯示
qstring string = codec->tounicode(encodedstring);
/* **演示 */
// 建立乙個qt的應用程式物件
// 1) 構造編碼物件 【目前ubuntu下vim的預設編碼為utf-8】
qtextcodec* coder = qtextcodec::codecforname ("utf-8");
// 建立乙個標籤物件
// 2) 將要顯示的字串轉換為unicode編碼
qlabel label (coder->tounicode ("你好, qt!"));
// 顯示標籤物件
label.show ();
// 讓我的程式進入事件迴圈
}
練習:構建qpushbutton按鈕物件,按鈕物件內容「按我」;
1)用vi編輯器寫源**,構建(6步),結果可以直接顯示中文
2)將程式button.cpp拷貝到windows共享目錄
共享目錄建立方式參見剛才的
3)使用記事本開啟,另存為,編碼方式選擇ansi編碼(中文gbk)
4)將ansi編碼方式的源**拷貝回ubuntu替換原來的**
5)再次make構建執行,結果將是亂碼
6)設定編碼物件(gbk),轉換為qt內部的unicode編碼,再次make,結果將正常的顯示中文。
/** 練習** **/
qtextcodec* coder = qtextcodec::codecforname ("gbk");
qpushbutton button (coder->tounicode ("按我"));
button.show ();
}
Qt QString字串擷取
利用qt,結合一些影象處理,做軟體的時候,做基礎的首先是讀乙個進來,經常需要用字串存一下所讀的路徑,或者名稱。所以經常會利用到字串的擷取,可以從整串路徑中得到名。以下就介紹兩個擷取字串的函式 mid 函式和section 函式 mid 函式接受兩個引數,第乙個是起始位置,第二個是取串的長度。如果省略...
Qt QString字串分割 擷取
字串陣列 qstringlist b b.insert 陣列下標,資料 b.at 陣列下標 split 按照指定的字元分割,如按照 或 等分割 qstringlist list1 str.split list1 a b c qstringlist list2 str.split qstring sk...
QT 字串中文
qstring內部採用unicode編碼方式,當字串存在中文時,需要根據系統的本地編碼方式進行轉換。一般在window開發環境裡,是gbk編碼,在linux開發環境裡,是utf 8編碼。通過qtextcodec類轉換字串編碼。示例qstring轉const cahr qtextcodec codec...