GBK转 QT的 Unicode
This commit is contained in:
parent
099c3c6024
commit
bac55473dc
|
|
@ -1083,7 +1083,34 @@ bool IsFiniteNumber(float v)
|
||||||
return false;
|
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) {
|
QString GBKToUTF8(const QByteArray& gbkData) {
|
||||||
|
|
||||||
|
if (isAlreadyUTF8(gbkData))
|
||||||
|
{
|
||||||
|
return gbkData;
|
||||||
|
}
|
||||||
|
|
||||||
QTextCodec* gbkCodec = QTextCodec::codecForName("GBK");
|
QTextCodec* gbkCodec = QTextCodec::codecForName("GBK");
|
||||||
if (!gbkCodec) {
|
if (!gbkCodec) {
|
||||||
return QString();
|
return QString();
|
||||||
|
|
|
||||||
|
|
@ -549,7 +549,7 @@ void QtProjectWidgets::loadWellTree(QTreeWidgetItem *parent, QString fileFull, Q
|
||||||
short Attribute=0,SubAttribute=0;
|
short Attribute=0,SubAttribute=0;
|
||||||
logio->GetObjectAttribute(i,&Attribute,&SubAttribute);
|
logio->GetObjectAttribute(i,&Attribute,&SubAttribute);
|
||||||
|
|
||||||
QString strCurveName = QString::fromLocal8Bit(curvename);
|
QString strCurveName = GBKToUTF8(curvename);// QString::fromLocal8Bit(curvename);
|
||||||
if(curvetype>CARD_OBJECT || 0 == curvetype)
|
if(curvetype>CARD_OBJECT || 0 == curvetype)
|
||||||
{
|
{
|
||||||
qDebug() << "strCurveName: " << strCurveName;
|
qDebug() << "strCurveName: " << strCurveName;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user