找回密码
 立即注册
收起左侧

VS开发Qt工程后移植Linux编译运行时出现乱码的问题

3
回复
8701
查看
[复制链接]

尚未签到

来源: 2018-2-1 11:22:04 显示全部楼层 |阅读模式
1Qter豆
请教个问题,我用VS开发qt项目,拿到linux下的Creator中编译通过,运行时出现中文乱码问题。
我对比看了在windows下,用Creator开发时一旦源码中使用了中文,保存时就将文件编码由原来的ansi改为了utf8。而用VS搞qt时,文件编码总是ansi。
对于linux下运行时乱码问题,我后来手动将含有中文的源码文件改为utf8后则正常了。

但是当源码很多时,这样一个个文件去改编码太麻烦了。所以特来请教有什么一劳永逸的解决方案没。

回复

使用道具 举报

累计签到:436 天
连续签到:1 天
2018-2-1 20:45:03 显示全部楼层
其实我觉得代码里不写中文不就行了
---------
或者不要用VS了
---------
再或者像 这个问题 下面的回答一样弄个脚本或插件之类的。
回复

使用道具 举报

尚未签到

2018-2-2 09:18:29 显示全部楼层
解决了,一劳永逸的办法就是在pro中添加gcc的参数:QMAKE_CXXFLAGS += -finput-charset=GBK
该参数可以设定GCC读取的源码文件编码格式。
回复

使用道具 举报

累计签到:4 天
连续签到:1 天
2018-2-5 14:38:01 显示全部楼层
我们公司开发需要跨平台,所以用这套方法解决跨平台乱码。亲测有效。


解决qt中文乱码:
1.在main函数中添加“QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));”代码,并添加  #include <QTextCodec>  头文件。
2.使用QStringLiteral宏。使用QStringLiteral来修饰中文字符串即可。它可以直接生成Unicode字符串保存在可执行文件中的只读区域。这样运行时不会发生任何转换。可以显著提高程序运行效率。 
3.使用文本编辑器以“utf-8”的编码格式打开代码文件,并保存,从而使代码文件的编码格式为utf-8格式。

代码如下:
#include <QCoreApplication>
#include <QDebug>
#include <QTextCodec> // for 中文显示

int main(int argc, char *argv[])
{
        QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8")); // 显示中文 便于跨平台 utf-8字符
       
        QCoreApplication a(argc, argv);
       
        qDebug() << QStringLiteral("中文");
       
        qDebug() << str_ascii;

        return a.exec();
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了