qte2讀取中文檔案的測試 txt

2021-05-23 13:13:12 字數 2363 閱讀 2427

讀取中文檔案內容的測試

有3種因素

1檔案的編碼格式(是utf8格式和非utf8格式)

2程式裡面轉換得到內容的方式(qstring::fromlocal8bit 和 codec->tounicode)

註明一下 這裡 qtextcodec* pcodec = qtextcodec::codecforlocale();

3不同的字型,假設知道有種字型可以正確顯示中文這裡舉例是sans serif字型和 不設定字型

因為我最先考慮的不是字型 所以順序如下

1.1 不是utf8檔案  + qstring::fromlocal8bit  = 方塊

1.2 不是utf8檔案  + codec->tounicode = 亂碼

2.1 是utf8檔案  + qstring::fromlocal8bit  = 方塊

2.2 是utf8檔案  + codec->tounicode  = 亂碼 

上面都沒有考慮字型 這時候 熱心的網友提醒我注意字型 我就分設定字型和不設定字型

3.1 設定字型 + 不是utf8檔案  + qstring::fromlocal8bit = 亂碼

3.2 設定字型 + 不是utf8檔案  + codec->tounicode = 亂碼

3.3 設定字型 + 是utf8檔案  + codec->tounicode  = 亂碼 

3.4 設定字型 + 是utf8檔案  + qstring::fromlocal8bit  = 終於出來漢字了

設定字型

qfont font;

font.setpointsize(16);

font.setfamily(("sans serif"));

sceneryinfo->txtlabel->setfont(font);

是utf8檔案,這個要自己用編輯器轉

sceneryinfo->txtlabel->settext(qstring::fromlocal8bit(file.readall()));

漢字出來了。。。。

不知道我表達清楚了沒有呢

qfont font;

font.setpointsize(16);

font.setfamily(("sans serif"));

sceneryinfo->txtlabel->setfont(font);

一定要記得setpointsize一下哦

qfile file(strtxt);

//qtextcodec* pcodec = qtextcodec::codecforname("gbk");

//qtextcodec* pcodec = qtextcodec::codecforname("gb18030");

//qtextcodec* pcodec = qtextcodec::codecforname("gb2312");

//qtextcodec* pcodec = qtextcodec::codecforname("utf8");

//qtextcodec* pcodec = qtextcodec::codecforname("iso 8859-1");

qtextcodec* pcodec = qtextcodec::codecforlocale();

if(null==pcodec)

else

//qtextcodec* pcodec = qtextcodec::codecforlocale();

if (file.open(io_readonly))//qfile::readonly | qfile::text

else

printf("leedebug open error/n");

liur(8174296) 19:59:03

1. 儲存中文的檔案需要是 unicode 格式.

2. 使用 qstring 來儲存讀取出來的資料(因為qstring內部使用的unicode機制,如果你使用 char 那麼需要一次轉換).

3. 由於很多字型並不支援 全部unicode編碼(或者根本不支援unicode編碼).那麼 unicode 碼的中文字還是不能顯示的.所以你需要設定 qfont 的 family 是支援中文unicode碼的字型檔.比如 : 宋體(注意:宋體在非windows系統下的具體名稱).

liur(8174296) 20:00:06

以上的方法對其他全形字也支援,比如韓文.

liur(8174296) 20:04:17

@leenux:

2. qstring 的內部編碼也是 utf16.

3. qstring直接儲存 utf16 編碼的資訊不需要使用qstring::fromlocal8bit 轉換就可以成功顯示.

由於以上因素,我建議檔案儲存成 utf16 的形式.

qt讀取中文檔案內容的測試

qt讀取中文檔案內容的測試 讀取中文檔案內容的測試 有3種因素 1檔案的編碼格式 是utf8格式和非utf8格式 2程式裡面轉換得到內容的方式 qstring fromlocal8bit 和 codec tounicode 註明一下 這裡 qtextcodec pcodec qtextcodec c...

python讀取中文檔案亂碼

近期在使用python對中文檔案進行讀寫操作時,發現讀入的中文檔案出現亂碼現象,如圖 後查閱相關資料發現,python預設使用的uascii編碼,而中文需要使用unicode編碼,因此需要對讀入的中文進行格式轉換。轉碼命令為 或者 此時,讀入的文字型別為unicode型別。如果讀入的文字中包含部分資...

php fputcsv 讀取不到中文檔案 資料

string setlocale constant,location constant 必需。規定應該設定什麼地區資訊。可用的常量 location 必需。規定把地區資訊設定為哪個國家 地區。可以是字串或者陣列。可以傳遞多個位置。如果 location 引數是 null 或空字串 則位置名稱會被設定...