• 8096阅读
  • 5回复

[提问]QT在windows xp下怎么不支持UTF-8编码 [复制链接]

上一主题 下一主题
离线kummar
 
只看楼主 倒序阅读 楼主  发表于: 2011-07-11
我在Qt creator(qt4.6.2)中写了这样的测试程序

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QString name("张三");
    QString name2("李四");
    QByteArray array,array2;
    array.append(name);
    array2.append(name2);
    qDebug()<<"name= "<<name;
    qDebug()<<"name2= "<<name2;
    qDebug()<<"array= "<<array.toHex();
    qDebug()<<"array2= "<<array2.toHex();
    QTextEdit te;
    te.show();
    te.setText(name);
    return a.exec();
}
运行结果:
name= "????"
name2= "????"
array=   "efbfbdefbfbdefbfbdefbfbd"
array2= "efbfbdefbfbdefbfbdefbfbd"  
这个结果是不是说明不支持UTF-8编码,请求解答,谢谢
离线XChinux

只看该作者 1楼 发表于: 2011-07-11
是因为你的Console的原因吧,是GBK的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线kummar
只看该作者 2楼 发表于: 2011-07-11
回 1楼(XChinux) 的帖子
array=   "efbfbdefbfbdefbfbdefbfbd"
array2= "efbfbdefbfbdefbfbdefbfbd"
那这两个一样也是Console原因吗,怎么解决呢?
离线dbzhang800

只看该作者 3楼 发表于: 2011-07-11
Re:回 1楼(XChinux) 的帖子
引用第2楼kummar于2011-07-11 15:05发表的 回 1楼(XChinux) 的帖子 :
array=   "efbfbdefbfbdefbfbdefbfbd"
array2= "efbfbdefbfbdefbfbdefbfbd"
那这两个一样也是Console原因吗,怎么解决呢?

1. 你的源代码是不是Utf8 编码? 用的何种编译器,mingw 还是 msvc?如果后者的话,你的 utf8 源码带还是不带BOM ?
2. 你的Console 支持还是不支持utf8字节流?至少简体中文windows系统cmd窗口目前尚还是 gbk 流
离线kummar
只看该作者 4楼 发表于: 2011-07-13
回 3楼(dbzhang800) 的帖子
我直接是在XP下的Qt creator中调试输出的,是mingw 的
离线dbzhang800

只看该作者 5楼 发表于: 2011-07-13
Re:回 3楼(dbzhang800) 的帖子
引用第4楼kummar于2011-07-13 19:14发表的 回 3楼(dbzhang800) 的帖子 :
我直接是在XP下的Qt creator中调试输出的,是mingw 的

不妨先去看看
http://hi.baidu.com/cyclone/blog/item/9d7293130e5a498d6538dbf1.html
  
题外,一个建议:
在对编码基本问题有基本了解之前,不要在代码中使用中文。
快速回复
限100 字节
 
上一个 下一个