Qt讀取ANSI格式文件——利用QTextCodec將其他編碼格式的QByteArray轉換為Unicode格式,或者從文件中讀出后直接做轉換


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM