讀取中文檔案內容的測試
有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 或空字串 則位置名稱會被設定...