GBK转 QT的 Unicode
This commit is contained in:
parent
099c3c6024
commit
bac55473dc
|
|
@ -1083,7 +1083,34 @@ bool IsFiniteNumber(float v)
|
|||
return false;
|
||||
}
|
||||
|
||||
bool isAlreadyUTF8(const QString& str) {
|
||||
// 检查是否包含常见的 GBK 乱码特征
|
||||
// GBK 乱码通常是大量 ASCII 字符范围内但无意义的字符
|
||||
|
||||
// 方法1:检查是否包含替换字符 (U+FFFD)
|
||||
if (str.contains(QChar::ReplacementCharacter)) {
|
||||
return false; // 包含替换字符,说明之前转换可能有问题
|
||||
}
|
||||
|
||||
// 方法2:检查字符是否都在合法的 Unicode 范围
|
||||
for (const QChar& ch : str) {
|
||||
if (ch.unicode() < 0x20 && ch.unicode() != 0x0A && ch.unicode() != 0x0D) {
|
||||
// 存在不可打印字符,可能是误转换
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
QString GBKToUTF8(const QByteArray& gbkData) {
|
||||
|
||||
if (isAlreadyUTF8(gbkData))
|
||||
{
|
||||
return gbkData;
|
||||
}
|
||||
|
||||
QTextCodec* gbkCodec = QTextCodec::codecForName("GBK");
|
||||
if (!gbkCodec) {
|
||||
return QString();
|
||||
|
|
|
|||
|
|
@ -549,7 +549,7 @@ void QtProjectWidgets::loadWellTree(QTreeWidgetItem *parent, QString fileFull, Q
|
|||
short Attribute=0,SubAttribute=0;
|
||||
logio->GetObjectAttribute(i,&Attribute,&SubAttribute);
|
||||
|
||||
QString strCurveName = QString::fromLocal8Bit(curvename);
|
||||
QString strCurveName = GBKToUTF8(curvename);// QString::fromLocal8Bit(curvename);
|
||||
if(curvetype>CARD_OBJECT || 0 == curvetype)
|
||||
{
|
||||
qDebug() << "strCurveName: " << strCurveName;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user