QT中文输入与显示的问题

我是windows系统。我用的是vs2012编写qt程序,我已经向vs中添加了qt类库。现在我遇到了中文输入和显示的问题。我一向窗口部件Qlable或Qlineedit显示中文就出现乱码,我在网上百度的小样都运行不了,说是我没有定义setCodecForTr函数,但哪个函数怎么定义啊,我以为是头文件中自动包含了定义和实现呢。
#include "mywindow.h"
#include
#include

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

QLabel hello(QObject::tr("你好"));

hello.setWindowTitle(QObject::tr("终于搞定中文"));

hello.show();

mywindow w;
w.show();
return a.exec();
}

qt

4个回答

为了不报错,应该把你的项目属性中的编码规则改成UTF-8和如果是UTF-8则添加。

这个问题很多人回答过了,你搜一下? Qt5.X版本已经取消了QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));,而且也不推荐这种
方法。你的项目源码编码应该默认是UTF-8的,这样,你在源码里写的汉字是UTF-8的,你的源码文件或许还会在编译的时候报错误。简单的办法是
删掉QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));这行
QLabel hello(QObject::tr("你好")); 这行改成:QLabel hello(QObject::tr("\344\275\240\345\245\275"));
hello.setWindowTitle(QObject::tr("终于搞定中文"));这行改成hello.setWindowTitle(QObject::tr("\347\273\210\344\272\216\346\220\236\345\256\232\344\270\255\346\226\207"));

qq_20203153
qq_20203153 大神你好,我那只是小样,我现在是写了一个程序。程序要输出道路名称,道路名称有上百条,我存在数组里的,我不可能每一条都这么翻译吧,求大神介绍个别的方法吧
大约 5 年之前 回复

如果你的源码是UTF-8,而你的locale是GBK那么首先,你的源码里如果数组存储汉字(UTF-8)的有可能编译的时候都报错。给你看看一般的两者转换
方法:
QByteArray convertGb2312ToUtf8(const QByteArray &originalStr)
{
QString unicodeStr = QTextCodec::codecForName("GBK")->toUnicode( originalStr );
return QTextCodec::codecForName("UTF-8")->fromUnicode( unicodeStr );
}

举个简单的例子:我的源码目前的选项是:UTF-8编码,BOM目前存在了则保留。我的源码中如果有如下代码:
QString str=QString("这个会引起错误吗?");
然后就会编译报错:
error: C2001: newline in constant
但是当你把前边的选择项修改成BOM如果没有则添加,然后先删除中文,再重新输入一遍并保存,qmake,nmake。不报错了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问