日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 源文件的编码会对编译结果有影响 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

結論:

1、Source Insight 3.50.63 不能顯示編碼為UTF8的源文件中的中文字符。ANSI編碼的文件中的中文字符能正常顯示。(最新的3.50.64版本也有同樣問題)

2、Windows下無論源代碼文件是UTF8還是ANSI,對編譯結果無影響。

3、Linux下源代碼文件是UTF8的中文顯示正常,ANSI的中文亂碼。

正文:(發現問題的經過)

今天偶然發現,在SI中,中文字符串顯示為亂碼。

但如果用notepad打開該文件,則不是亂碼。從notepad打開的界面中復制到SI中,也不是亂碼。

據此,可以推測,該文件保存為某種編碼,使得SI不能正確顯示。

用UE打開該文件,另存一個為ANSI格式的文件KtvMainScreen1.cpp:

然后再在SI中打開,中文顯示正常了。

然后用BC打開,發現:原來的SI中亂碼的文件是UTF-8格式的。


把左邊選擇為ANSI才能顯示正常:

能否用另存的文件來代替原來的文件進行編譯呢?那樣會不會在軟件中出現亂碼?

后來,用下面代碼測試中文顯示,有一種寫法中文顯示正常。

#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每個漢字多一個字節。

由此可知,Windows上,源代碼文件為UTF8還是ANSI編碼,編譯后都不會有亂碼。

然后在Linux上也把兩種文件都編譯一次,發現UTF8的文件,中文正常;ANSI的文件,中文亂碼。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的源文件的编码会对编译结果有影响的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。