QT5.1.0中文乱码的问题。

thinking空 发布于 2013/07/31 22:06
阅读 8K+
收藏 1
Qt

在ui界面直接输入汉字显示正常,但是使用如下代码就会显示乱码。

QMessageBox::warning(this,tr("创建文件夹"),tr("文件夹创建成功!"));
网上查的资料没看太懂,感觉不是大问题,期待大神的解答。

加载中
0
地瓜儿
地瓜儿
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
地瓜儿
地瓜儿
回复 @可可可 : 道理都一样 告诉系统你要的编码方式 否则就是用默认
thinking空
thinking空
新建了个工程,把默认编码改成utf-8,乱码就没有了。
1
hls
hls

qt4.*系列版本下QTextCodec可以调用全局函数setCodecForCStrings、setCodecForLocale、setCodecForTr来设置QString、本地、翻译项的字符集。

qt5.*系列下QTextCodec只可以调用全局函数setCodecForLocale来设置本地的字符集。setCodecForCStrings、setCodecForTr这两个函数已不支持。qt5下qstring已经为utf-8.

建议:

1.为了跨平台,建议所有文本文件.log/.txt/.ini/.h/.cpp全部采用utf-8(无bom),可以使用ultaedit保存。

2.在main函数中

QApplication a(argc, argv);
之后设置字符集
 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
3.直接在代码中使用中文即可,如 
QString strName = "汉字";

1
ylxg12345
ylxg12345

引用来自“hls”的答案

qt4.*系列版本下QTextCodec可以调用全局函数setCodecForCStrings、setCodecForLocale、setCodecForTr来设置QString、本地、翻译项的字符集。

qt5.*系列下QTextCodec只可以调用全局函数setCodecForLocale来设置本地的字符集。setCodecForCStrings、setCodecForTr这两个函数已不支持。qt5下qstring已经为utf-8.

建议:

1.为了跨平台,建议所有文本文件.log/.txt/.ini/.h/.cpp全部采用utf-8(无bom),可以使用ultaedit保存。

2.在main函数中

QApplication a(argc, argv);
之后设置字符集
 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
3.直接在代码中使用中文即可,如 
QString strName = "汉字";

说的好,非常有用
0
柚子ban
柚子ban
我从Qt4.8升级到5.1的时候也碰到了这个问题, QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));  

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));这两个方法5.1都不存在了,期待大神降临啊

0
柚子ban
柚子ban
将cpp源代码编码改成utf8似乎就能解决问题
0
hls
hls
若使用的ide为qtcreator,可以在工具->选项->文本编辑器->行为中:默认编码 选择为“UTF-8",UTF-8 BOM选择为“总是删除”。这样编辑的文件、新增的文件、保存的文件都自动采用utf-8 字符集保存。
thinking空
thinking空
多谢!
0
thinking空
thinking空

引用来自“hls”的评论

qt4.*系列版本下QTextCodec可以调用全局函数setCodecForCStrings、setCodecForLocale、setCodecForTr来设置QString、本地、翻译项的字符集。

qt5.*系列下QTextCodec只可以调用全局函数setCodecForLocale来设置本地的字符集。setCodecForCStrings、setCodecForTr这两个函数已不支持。qt5下qstring已经为utf-8.

建议:

1.为了跨平台,建议所有文本文件.log/.txt/.ini/.h/.cpp全部采用utf-8(无bom),可以使用ultaedit保存。

2.在main函数中

QApplication a(argc, argv);
之后设置字符集
 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
3.直接在代码中使用中文即可,如 
QString strName = "汉字";

说的太好了,之前选错最佳回答了...
返回顶部
顶部