Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何处理QT&;之间的韩文字符集;神谕_C++_Oracle_Qt_Unicode - Fatal编程技术网

C++ 如何处理QT&;之间的韩文字符集;神谕

C++ 如何处理QT&;之间的韩文字符集;神谕,c++,oracle,qt,unicode,C++,Oracle,Qt,Unicode,我想使用Oracle和ODBC 我可以成功地从Oracle获取数据。但是韩国人的性格是破碎的像????。 正如所有程序员在互联网论坛上所说,我试图应用QTextCodec,如下所示 我尝试了EUC-KR和其他编解码器名称。但是没有变化 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QSqlQuery q("select * from temp", db); q.setForwardOnly(tr

我想使用Oracle和ODBC

我可以成功地从Oracle获取数据。但是韩国人的性格是破碎的像????。 正如所有程序员在互联网论坛上所说,我试图应用
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(在Windows7上)进行开发,默认的文件文本编码是utf-8

如果你能给我点评,我将不胜感激


谢谢。

我认为您需要更改编解码器名称,因为您需要一个从韩语字符集到UTF8的编解码器

尝试将代码更改为:

QTextCodec *codec = QTextCodec::codecForName("cp949");
由于Wikipedia页面提到它是EUC-KR的非标准Microsoft版本,您也可以尝试
EUC-KR

请尝试以下程序以获取文本编解码器和别名的列表:

测试.cpp

#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;
}

请注意,为了简洁起见,该程序使用了
auto
,但这需要一个C++11编译器(在GCC 4.4上测试)。

您能否创建另一个
QTextCodec*codec2=QTextCodec::codeforname(“UTF-16”);1用于UTF-16?
,然后执行
contect=contect+codec2->toUnicode(名称)?·也许它有助于将DB结果的字符编码转换为QT字符串使用的编码。你不正确的结果确实强烈地表明,这不是你目前正在做的事情。即,DB结果不是UTF-8编码的。干杯,
QT += core
SOURCES=test.cpp
QMAKE_CXXFLAGS += -std=c++0x