最好所有QT项目 文件编码: UTF-8
QString 编码: UTF-8
const char* 编码: UTF-8
1.QString 有2种编码: UTF-8 GBK 默认的是UTF-8
1.1 QString : GBK -> UTF-8
1.使用 toUtf8()
方法
QString gbkString = ...; // 假设这是一个使用 GBK 编码的 QString 对象
QByteArray utf8Bytes = gbkString.toUtf8();
QString utf8String = QString::fromUtf8(utf8Bytes);
toUtf8()
方法将QString
转换为 UTF-8 编码的QByteArray
。QString::fromUtf8()
方法将 UTF-8 编码的QByteArray
转换为QString
对象。
2 使用 fromLocal8Bit()
方法
QString gbkString = ...; // 假设这是一个使用 GBK 编码的 QString 对象
QString utf8String = QString::fromLocal8Bit(gbkString.toLocal8Bit());
1.2 QString: UTF-8 ->GBK
1.使用 toLocal8Bit()
方法
QString utf8String = ...; // 假设这是一个使用 UTF-8 编码的 QString 对象
QByteArray gbkBytes = utf8String.toLocal8Bit();
QString gbkString = QString::fromLocal8Bit(gbkBytes);
-
toLocal8Bit()
方法将QString
转换为当前系统的本地编码(在某些系统上默认为 GBK)的QByteArray
。QString::fromLocal8Bit()
方法将本地编码的QByteArray
转换为QString
对象,这里假设本地编码为 GBK。
2.使用 fromUtf8()
和 toLocal8Bit()
QString utf8String = ...; // 假设这是一个使用 UTF-8 编码的 QString 对象
QByteArray utf8Bytes = utf8String.toUtf8();
QByteArray gbkBytes = QString::fromUtf8(utf8Bytes).toLocal8Bit();
QString gbkString = QString::fromLocal8Bit(gbkBytes);
-
toUtf8()
方法将QString
转换为 UTF-8 编码的QByteArray
。fromUtf8()
方法将 UTF-8 编码的QByteArray
转换为QString
对象。toLocal8Bit()
方法将QString
转换为当前系统的本地编码(在某些系统上默认为 GBK)的QByteArray
。QString::fromLocal8Bit()
方法将本地编码的QByteArray
转换为QString
对象,这里假设本地编码为 GBK。
2. const char* 有多种编码: UTF-8 GBK ANSI
3.const char * 未知编码 转成 QString UTF-8编码
#include <QString>
#include <QTextCodec>
#include <QDebug>
QString convertToUtf8QString(const char* input)
{
// List of commonly used codecs to try
const char* codecs[] = {"UTF-8", "GBK", "GB2312", nullptr};
// Try each codec until successful conversion
for (int i = 0; codecs[i] != nullptr; ++i) {
QTextCodec* codec = QTextCodec::codecForName(codecs[i]);
if (!codec) {
qDebug() << "Codec" << codecs[i] << "not supported.";
continue;
}
QString result = codec->toUnicode(input);
// Check if result contains valid data
if (!result.isEmpty()) {
qDebug() << "Successfully converted using codec" << codecs[i];
return result;
}
}
// Fallback: Return as QByteArray if conversion fails
return QString::fromLatin1(input);
}
int main()
{
const char* unknownEncodingString = "Hello, 你好";
QString utf8QString = convertToUtf8QString(unknownEncodingString);
qDebug() << "UTF-8 QString:" << utf8QString;
return 0;
}