簡體   English   中英

如何在QT和Oracle之間處理韓文字符集

[英]How to handle Korean character set between QT & Oracle

我想將Oracle與ODBC一起使用。

我可以從Oracle成功獲取數據。 但是朝鮮語字符像????一樣壞了。 正如所有程序員在Internet論壇上QTextCodec那樣,我試圖像下面那樣應用QTextCodec

我嘗試了EUC-KR和其他編解碼器名稱。 但是沒有變化。

   QTextCodec *codec = QTextCodec::codecForName("UTF-8");
   QSqlQuery q("select * from temp", db);
             q.setForwardOnly(true);
           QString contect= "";
           while(q.next())
           {
               QByteArray name = q.value(0).toByteArray();
               QString age = q.value(1).toString();
               contect = contect +  codec->toUnicode(name);

               ui.textEdit->setText(contect);
           }

Oracle補充信息是.....

NLS_CHARACTERSET : KO16MSWIN949 
NLS_NCHAR_CHARACTERSET : AL16UTF16
NLS_LANG : KOREAN_KOREA.KO16MSWIN949

我正在使用Eclipse開發(在Windows 7上),默認文件文本編碼為utf-8。

如果您給我評論,我將不勝感激。

謝謝。

我認為您需要更改編解碼器名稱,因為您需要將韓文字符集中的編解碼器轉換為 UTF8。

嘗試將代碼更改為:

QTextCodec *codec = QTextCodec::codecForName("cp949");

正如Wikipedia頁面的Code頁面949所提到的那樣,它是EUC-KR的非標准Microsoft版本,您也可以嘗試EUC-KR

嘗試以下程序獲取文本編解碼器和別名的列表:

測試文件

#include <QtCore>
int main(int argc, char** argv)
{
        QCoreApplication app(argc, argv);
        const auto codecs = QTextCodec::availableCodecs();
        for (auto it = codecs.begin(); it != codecs.end(); ++it)
        {
                const auto codec = QTextCodec::codecForName(*it);
                qDebug() << codec->name() << codec->aliases();
        }
        return 0;
}

test.pro

QT += core
SOURCES=test.cpp
QMAKE_CXXFLAGS += -std=c++0x

請注意,為簡潔起見,該程序使用了auto ,但這需要C ++ 11編譯器(已在GCC 4.4上進行了測試)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM