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