t使用Unicode來表示字符串。但是通常需要訪問一些非Unicode格式的字符串,例如打開一個GBK編碼的中文文本文件,甚至一些非Unicode編碼的日文,俄文等。
Qt提供了QTextCodec類用於不同編碼格式之間的轉換。關於Qt字符串格式轉換以及QTextCodec的使用方式,網上有很多資料。其中大多數看起來很復雜,甚至根本無法完成轉換工作,或者是基於較低的Qt版本編寫。因此,有必要對使用QTextCodec完成字符串格式轉換進行簡要說明,本文中代碼基於Qt5.1編寫。
其實,在Qt幫助手冊中就有示例代碼,但是是基於俄文的,這里簡單修改為中文編碼之間的轉換。
將GBK編碼(ANSI的簡體中文編碼)轉換為Unicode編碼格式:
QByteArray encodedString = "...";
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString string = codec->toUnicode(encodedString);
將Unicode編碼轉換為GBK編碼格式:
QString string = "...";
QTextCodec *codec = QTextCodec::codecForName("GBK");
QByteArray encodedString = codec->fromUnicode(string);
下面給出讀取GBK編碼的TXT文件的示例代碼:
QFile file("FileName");
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString line = codec->toUnicode(file.readLine());
http://blog.csdn.net/desert187/article/details/39895259