我想将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。
如果你给我评论,我将不胜感激。
感谢。
答案 0 :(得分:0)
我认为您需要更改编解码器名称,因为您需要从韩语字符集到 UTF8的编解码器。
尝试将代码更改为:
QTextCodec *codec = QTextCodec::codecForName("cp949");
由于Code page 949的维基百科页面提到它是EUC-KR的非标准Microsoft版本,您还可以尝试EUC-KR
。
尝试使用以下程序获取文本编解码器和别名列表:
<强> TEST.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上测试)。