QT乱码总结4.细谈本地编码
QT亂碼總結0.Qt亂碼產生因素
https://blog.csdn.net/liujiayu2/article/details/103167953
QT亂碼總結1.Unicode 和 UTF-8
https://blog.csdn.net/liujiayu2/article/details/103168020
QT亂碼總結2.gbk和ANSI和gb2312的區別
https://blog.csdn.net/liujiayu2/article/details/103168168
QT亂碼總結3.UNICODE有無BOM
https://blog.csdn.net/liujiayu2/article/details/103168236
QT亂碼總結4.細談本地編碼
https://blog.csdn.net/liujiayu2/article/details/103168249
QT亂碼總結5.萬能解決方案
https://blog.csdn.net/liujiayu2/article/details/103168272
QT亂碼總結6.編碼測試和總結一
https://blog.csdn.net/liujiayu2/article/details/103168289
QT亂碼總結7.編碼測試和總結二
https://blog.csdn.net/liujiayu2/article/details/103168301
QT亂碼總結8.編碼測試和總結三
https://blog.csdn.net/liujiayu2/article/details/103168307
QT亂碼總結9.編碼測試和總結四
https://blog.csdn.net/liujiayu2/article/details/103168317
QT亂碼總結編碼測試工程:
https://download.csdn.net/download/liujiayu2/11987065
?
什么是本地編碼?
每一個操作系統都有本地編碼,這個依照操作系統不同而不同,比如我們常見的window簡體中文版操作系統,本地編碼默認是gbk編碼。舉例說明一下本地編碼:我們在桌面新建一個文本文件“測試文本.txt”,寫入內容“123我愛你”,如圖:
然后切換本地編碼為美國英語。重寫打開一下,看看里面內容:
我們看到同樣一個文本,切換本地編碼就表現大不相同。有的問會問了,好像中文路徑名字都是一樣的,這是因為windows內部統一采用UTF-16編碼(網上看到的,確定性待分析)
?
如何查看本地編碼?
方式1:cmd命令下輸入chcp,如下圖:
936就代表中文簡體(GBK編碼)。
方式2:
打開 控制面板->區域和語言->管理->更改系統區域設置,看到如下圖:
現在采用的就是中文簡體編碼。
?
如何更改本地編碼?
方法1,在上述描述中的控制面版里面改,改之后重啟操作系統,整個操作系統默認編碼都改變了。我們之前介紹什么是本地編碼中更改本地編碼采用的就是這種手段。
方法2,QTextCodec::setCodeForLocal(),這個只能對當前應用有效,并非全局設置。
?
Qt中本地編碼有什么用,哪些動作和本地編碼相關?
qt中有兩個常用的函數和本地編碼息息相關,QTextCodec::setCodecForLocal()設置本地編碼。QString::fromLocal8Bit()從本地編碼初始化一個字符串。比如說:文件采用ANSI編碼,里面有個漢字字符,采用QString::fromLocal8Bit()包括,對QTextCodec::setCodecForLocal()不r進行設置,或者這是成本地編碼,或本地編碼的的方式:
QTextCodec::codeForLocal或者QTextCodec::codeForName("system")如果是window簡體中文版操作系統也可以寫成QTextCodec::codeForName("gb2312")。
舉一個反面教材:
文本文件(ANSI)
+ ?QString::fromLocal8Bit()
+? QTextCodec::setCodecForLocal(QTextCodec::codeForName("utf-8"))
+ ?簡體中文版操作系統?
= 亂碼。
原因:本來清一色的 ANSI,卻來了個UTF-8。紅色標注的選項多次一舉,不設置就會正常顯示。
?
?
?
總結
以上是生活随笔為你收集整理的QT乱码总结4.细谈本地编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT乱码总结3.UNICODE有无BOM
- 下一篇: QT乱码总结5.万能解决方案