Qt5中文乱码解决方法

rophie 2013-03-11 11:14:58
目前试了两种方法
一:QStringLiteral

setWindowTitle(QStringLiteral("我是中文"));

二:

QTextCodec *codec = QTextCodec::codecForName("GB18030");
setWindowTitle(codec->toUnicode("我是中文"));


请问还有没有别的解决方法,这样太麻烦啊
...全文
38619 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2015-10-28
  • 打赏
  • 举报
回复
首先选中乱码源文件,比如main.cpp。然后点击“编辑”-“Select Encoding”-"utf8" 然后Ctrl+Z,运行一下就是中文了(忽略上栏提示)。我也不知道为什么,反正是可以用的。
天半子 2014-12-02
  • 打赏
  • 举报
回复
setWindowTitle(QString::fromUtf8("我是中文")); //这个可以 setWindowTitle(QString::fromUtf8("我是中")); //这个就不可以,我试了好多,奇数个都不行,它都说有常量换行符,偶数个都可以, 请问是为什么?怎么解决?
天地一扁舟 2014-10-11
  • 打赏
  • 举报
回复
引用 7 楼 rophie 的回复:
[quote=引用 2 楼 HeadmasterWang 的回复:] 最好的办法是写的时候用英文, 然后lupdate生成ts翻译再lrelease
这么说的话,那我从数据库里读出来显示的中文怎么办呢?不是预先设置的[/quote] 楼主朋友您好,我现在遇到和您一样的问题,我的开发环境是:Qt5.2+VS2012,也出现中文乱码。 我现在要把数据库中的记录放在界面展示,但是数据库中是有中文的,如何显示呢
brk1985 2014-09-15
  • 打赏
  • 举报
回复
引用 5 楼 liuyuanmei 的回复:
a) 如果以前的源文件编码是GBK的,则需要使用QString::fromLocal8Bit()函数将原来的汉字括起来;或者直接将源文件编码转换成UTF-8的(缺点是MSVC编译器不能方便的使用了)。我使用了使用QString::fromLocal8Bit()来调用的方式(当然了,另写便捷函数或宏来处理) b) 如果以前的源文件编码是UTF-8的,则什么都不用动。
QT5开发及实例 源代码是UTF-8的,出现编译问题,也是因为中文导致的问题
thinking空 2014-09-13
  • 打赏
  • 举报
回复
同问+1....
蓝云渐远 2014-08-19
  • 打赏
  • 举报
回复
引用 12 楼 rophie 的回复:
解决了,只要文件编码是utf-8就不会乱码
是啊 我也发现了,只有源代码文件是UTF8编码的,就不会出问题, 但是我在QT Creator中直接编写代码,怎么才能使输入的内容是UTF8编码的呢?编辑设置里面也没有找到。。。。 有知道的吗?
wjian20 2014-01-07
  • 打赏
  • 举报
回复
我也遇到同类问题
rophie 2013-03-22
  • 打赏
  • 举报
回复
引用 15 楼 wopabe 的回复:
引用 楼主 rophie 的回复:目前试了两种方法 一:QStringLiteral C/C++ code?1setWindowTitle(QStringLiteral("我是中文")); 二: C/C++ code?12QTextCodec *codec = QTextCodec::codecForName("GB18030");setWindowTitle(c……
不用中文用翻译? 对了,用QString::toLocal8Bit ()也行
rophie 2013-03-22
  • 打赏
  • 举报
回复
打错,呵呵……
qt初体验 2013-03-22
  • 打赏
  • 举报
回复
QString::Fromlocal8bit("我是中文")
wopabe 2013-03-21
  • 打赏
  • 举报
回复
引用 楼主 rophie 的回复:
目前试了两种方法 一:QStringLiteral C/C++ code?1setWindowTitle(QStringLiteral("我是中文")); 二: C/C++ code?12QTextCodec *codec = QTextCodec::codecForName("GB18030");setWindowTitle(codec->toUnicode("……
你的方法就是好方法, 不过还是少用中文吧
rophie 2013-03-21
  • 打赏
  • 举报
回复
现在问题是文件编码是utf-8的,但是有些字还是显示不出来,比如说"用户名:"这个字符串只能显示出"用户"两个字,后面的都是乱码,要么就在"用户名: "后面加个空格就可以了,字数好像只有偶数才能全部显示,不知道怎么回事
雲天之巔 2013-03-21
  • 打赏
  • 举报
回复
引用 12 楼 rophie 的回复:
解决了,只要文件编码是utf-8就不会乱码
+1 我发现了 这个不是Qt5的问题 而是新版Qt creater的问题 我用Qt4 然后用新版的Qt creater也是要这样设置换成旧版的creater就不会
rophie 2013-03-13
  • 打赏
  • 举报
回复
解决了,只要文件编码是utf-8就不会乱码
嵌入式农民工 2013-03-12
  • 打赏
  • 举报
回复
setWindowTitle(QString::fromUtf8("我是中文"));
rophie 2013-03-12
  • 打赏
  • 举报
回复
引用 8 楼 jdwx1 的回复:
引用 7 楼 rophie 的回复:引用 2 楼 HeadmasterWang 的回复:最好的办法是写的时候用英文, 然后lupdate生成ts翻译再lrelease 这么说的话,那我从数据库里读出来显示的中文怎么办呢?不是预先设置的 只要写入和读出用一样的codec即可。
每个中文都要用codec包起来这么麻烦吗
jdwx 2013-03-12
  • 打赏
  • 举报
回复
引用 7 楼 rophie 的回复:
引用 2 楼 HeadmasterWang 的回复:最好的办法是写的时候用英文, 然后lupdate生成ts翻译再lrelease 这么说的话,那我从数据库里读出来显示的中文怎么办呢?不是预先设置的
只要写入和读出用一样的codec即可。
rophie 2013-03-12
  • 打赏
  • 举报
回复
引用 2 楼 HeadmasterWang 的回复:
最好的办法是写的时候用英文, 然后lupdate生成ts翻译再lrelease
这么说的话,那我从数据库里读出来显示的中文怎么办呢?不是预先设置的
jdwx 2013-03-12
  • 打赏
  • 举报
回复
引用 2 楼 HeadmasterWang 的回复:
最好的办法是写的时候用英文, 然后lupdate生成ts翻译再lrelease
+1
liuyuanmei 2013-03-12
  • 打赏
  • 举报
回复
a) 如果以前的源文件编码是GBK的,则需要使用QString::fromLocal8Bit()函数将原来的汉字括起来;或者直接将源文件编码转换成UTF-8的(缺点是MSVC编译器不能方便的使用了)。我使用了使用QString::fromLocal8Bit()来调用的方式(当然了,另写便捷函数或宏来处理) b) 如果以前的源文件编码是UTF-8的,则什么都不用动。
加载更多回复(5)

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧