源文件的编码会对编译结果有影响

结论:

1、Source Insight 3.50.63 不能显示编码为UTF8的源文件中的中文字符。ANSI编码的文件中的中文字符能正常显示。(最新的3.50.64版本也有同样问题)

2、Windows下无论源代码文件是UTF8还是ANSI,对编译结果无影响。

3、Linux下源代码文件是UTF8的中文显示正常,ANSI的中文乱码。

正文:(发现问题的经过)

今天偶然发现,在SI中,中文字符串显示为乱码。

image

但如果用notepad打开该文件,则不是乱码。从notepad打开的界面中复制到SI中,也不是乱码。

据此,可以推测,该文件保存为某种编码,使得SI不能正确显示。

用UE打开该文件,另存一个为ANSI格式的文件KtvMainScreen1.cpp:

image

然后再在SI中打开,中文显示正常了。

然后用BC打开,发现:原来的SI中乱码的文件是UTF-8格式的。

image
把左边选择为ANSI才能显示正常:

image

能否用另存的文件来代替原来的文件进行编译呢?那样会不会在软件中出现乱码?

后来,用下面代码测试中文显示,有一种写法中文显示正常。

#include <QApplication>
#include <QPushButton>
#include <QString>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    //QPushButton hello(QObject::trUtf8("世界您好!")); //Win7下运行时中文乱码
    //QPushButton hello(QObject::tr("世界您好!"));//Win7下运行时中文乱码
    QPushButton hello(QString::fromLocal8Bit("世界您好!"));//Win7下中文显示正常
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}
该文件为ANSI存储。另存为UTF8版本,编译后,中文显示仍然正常。

但二进制比较该源文件时,可以发现UTF8比ANSI每个汉字多一个字节。

image

由此可知,Windows上,源代码文件为UTF8还是ANSI编码,编译后都不会有乱码。

然后在Linux上也把两种文件都编译一次,发现UTF8的文件,中文正常;ANSI的文件,中文乱码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值