在Qt程序中出現(xiàn)latin1字符集以外的字符集,我們會(huì)立刻馬上想到QTextCodec减宣。并且會(huì)同時(shí)使用下面的幾行條代碼:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocal(codec);
QTextCodec::setCodecForCString(codec);
可是知道這幾行代碼表示什么意思嗎?QTextCodec有什么用?
上面的幾行代碼的中文意思是:
- 設(shè)置傳給tr()函數(shù)時(shí)的默認(rèn)字符串編碼
- 用于設(shè)置和對(duì)本地文件系統(tǒng)讀寫(xiě)時(shí)候的默認(rèn)編碼格式
- 用在字符串常量或QByteArray構(gòu)造QString對(duì)象時(shí)袜腥,使用的一種編碼方式
Qt默認(rèn)的編碼時(shí)Unicode,Windows下的編碼時(shí)GBK钉汗,Linux下的編碼時(shí)UTF-8羹令。
UTF-8轉(zhuǎn)換為GBK
QTextCodec str = QTextCodec::codecForName("UTF-8");
QString U2G(QString str)
{
return gbk->toUnicode(str.toLocal8Bit());
}
GBK轉(zhuǎn)換為UTF-8
QTextCodec str = QTextCodec::codecForName("GBK");
QString G2U(QString str)
{
return utf8->toUnicode(str.toLocal8Bit());
}