我使用Eclipse Mars.1版本(4.5.1)中,Win7 SP1和gcc 5.2.1(用於Cortex架構,從https://launchpad.net/gcc-arm-embedded)。當我嘗試編譯以UTF-8編碼的C代碼(使用BOM)時,gcc輸出顯示在ANSI中,當然不正確。我的工作區和項目的默認編碼設置爲UTF-8。GCC的UTF-8輸出顯示不正確Eclipse的構建控制檯
添加GCC開關-finput-charset=UTF-8
不會改變任何東西。
對於樣本代碼(C):
#error some code here /* diacritics in comment żółćąę */
我得到以下結果在Eclipse的構建控制檯:
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -Wall -Wstrict-prototypes -Wextra -Wchar-subscripts -Werror=implicit -finput-charset=UTF-8 -g -ggdb3 -fverbose-asm -Wa,-ahlms=./out/logbook_entry_ext2.lst -pipe -MD -MP -MF ./out/logbook_entry_ext2.d -Os -ffunction-sections -fdata-sections -I . -Itests/aceunit/ -Itests/ -Itests/inc/ logbook_entry_ext2.c -o out/logbook_entry_ext2.o
logbook_entry_ext2.c:32:2: error: #error some code here
#error some code here /* diacritics in comment żółćąę */
文件中ANSI(CP1250在我的語言環境的情況下編碼 - 中歐語言)顯示正確。
這同樣適用於Eclipse的解析器(例如,「存在的問題」窗口 - 編碼在類似的方式有破裂)。
我敢肯定有人已經克服了這個問題,因爲這是愚蠢使用ANSI編碼在21世紀,但大多數討論一個可以google是有關編碼字符串和標識符,在這裏是不是這樣的。我的確切問題是如何在Eclipse中解決這個問題,例如,通過更改Eclipse的編譯控制檯的編碼。不幸的是,到目前爲止我還沒有找到這樣的設置(僅適用於調試控制檯)。
我知道問題是什麼,所以我問了我可以如何解決它。你重新提出了我的問題,但並沒有削弱它。我寫道,我已經在任何地方使用UTF-8,但是無論是gcc打印輸出還是Eclipse將其輸出解釋爲古老的ASCII(通常還錯誤地稱爲「ANSI」,例如在Notepad ++中 - 你是對的)。而且Windows大多數地方都使用Unicode,cp1250是爲不支持Unicode的程序選擇的區域設置,因此不能在那裏使用UTF-8。 –
我不認爲海灣合作委員會是錯誤的,無論是在其輸入或輸出。如果您將CP-1250設置爲默認值,請參閱我的有關命令行行爲的部分。如果命令外殼程序在CP-1250中運行,那麼gcc的UTF-8輸出將按照所述的方式被破壞。 –
邁克,我已經知道,命令外殼正在運行cp1250,我熟悉你稱爲mojibake的垃圾(它通常出現在具有非ISO8859-1語言環境的系統上)。我的問題是如何在Eclipse中解決這個問題,例如通過更改Eclipse的編譯控制檯的編碼。到目前爲止我還沒有找到這樣的設置(僅適用於調試控制檯)。 –