gpt4 book ai didi

c++ - QT与Oracle之间如何处理韩文字符集

转载 作者:太空宇宙 更新时间:2023-11-04 14:19:41 26 4
gpt4 key购买 nike

我想将 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(在 Windows 7 上)进行开发,默认的文件文本编码是 utf-8。

如果你给我评论,我将不胜感激。

谢谢。

最佳答案

我认为您需要更改编解码器名称,因为您需要将韩文字符集转换为 UTF8 的编解码器。

尝试将您的代码更改为:

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

作为 Code page 949 的维基百科页面提到它是 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;
}

test.pro

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

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

关于c++ - QT与Oracle之间如何处理韩文字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com