• 6068阅读
  • 3回复

[提问]linux 下用 ODBC 连sql server 不支持中文 [复制链接]

上一主题 下一主题
离线mwsmeng
 

只看楼主 倒序阅读 楼主  发表于: 2012-09-16
linux 下用 ODBC 连sql server 不支持中文
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
用QTextCedec 设过UTF-8 和 GBK,都没有
执行以下代码
QSqlQuery query;
bool b = query.exe(tr("insert into Time(TimeName) values('时间')"));
系统编码UTF8 GBK 都试过,就是插入不了中文,英文正常

另外:直接用freetds 或 unixodbc插入中文是正常的,唯独用QT+QODBC 插入不了中文,提示:Error converting characters into server's character
离线realfan

只看该作者 1楼 发表于: 2012-09-16

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8") );

bool b = query.exe(  tr("insert into Time(TimeName) values(%1)").arg(tr("'时间'"))    );
试试看行不行
离线mwsmeng

只看该作者 2楼 发表于: 2012-09-18
尝试了各种办法
只有一种能支持中文,就是用prepare()的方式
query.prepare("insert into Time(TimeTable) values (?)");
query.bindValue(0,"中文");
query.exec();
但是这样使用很不方便,例如一个很复杂的sql语句,转成prepare方式是很麻烦的
离线XChinux

只看该作者 3楼 发表于: 2012-09-18
你想直接写中文,就要设置
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
或者
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

与你的源代码文件编码保持一致。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个