最好所有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 tryconst char* codecs[] = {"UTF-8", "GBK", "GB2312", nullptr};// Try each codec until successful conversionfor (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 dataif (!result.isEmpty()) {qDebug() << "Successfully converted using codec" << codecs[i];return result;}}// Fallback: Return as QByteArray if conversion failsreturn QString::fromLatin1(input);
}int main()
{const char* unknownEncodingString = "Hello, 你好";QString utf8QString = convertToUtf8QString(unknownEncodingString);qDebug() << "UTF-8 QString:" << utf8QString;return 0;
}