QString 中文編碼轉換


 
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/xxm524/article/details/74937308

QT字符編碼開發中遇到了很多坑,一不小心就會出現中文亂碼, 在這里小結一下。
 QString本身是編碼是unicode
在windows下local8Bit是GBK
 源代碼即.cpp文件是有編碼的,不同編譯器也有默認編碼,如:
微軟VS的中的cl采用GBK
Mingw中的g++不帶BOM的UTF-8
Linux下的g++ 采用帶BOM的UTF-8 這3中編碼進行保存
(所以,在代碼中hard code中文時, 要搞清楚使用的編譯器本身的編碼格式)
 
QString GBK2UTF8(const QString &str)
{
    QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
    return utf8->toUnicode(str.toUtf8());
}
 
QString UTF82GBK(const QString &str)
{
    QTextCodec *gbk = QTextCodec::codecForName("GB18030");
    return gbk->toUnicode(str.toLocal8Bit());
}
 
std::string GBK2UTF8(std::string &str)
{
    QString temp = QString::fromLocal8Bit(str.c_str());
    std::string ret = temp.toUtf8().data();
    return ret;
}
 
std::string UTF82GBK(std::string &str)
{
    QString temp = QString::fromUtf8(str.c_str());
    std::string ret = temp.toLocal8Bit().data();
    return ret;
}

 


免責聲明!

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



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