作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] code::Blocks中文輸出會變亂碼!!
時間Fri Mar 27 17:25:03 2009
※ 引述《idlekick (發呆騎士kick)》之銘言:
: 請問各位高手QAQ
: 我現在使用Code::Blocks 8.02版編輯程式,如果程式中含有中文
: 在comilper後,執行程式,裡頭的中文全變成亂碼,
: 請問這個要如何解決才可以正確顯示中文,感謝m(_ _)m
: 我的作業系統是WinXP,我有使用ultraedit去轉編碼也沒用!!
: 懇請各位高手們協助我,謝謝
這牽涉到兩個問題:
1. 你的 source code 使用什麼編碼方式?
2. 你如何把文字顯示出來?
這兩部份的編碼方式要相同,中文才不會變亂碼。
比如說,你的 source code 用 big5 編碼,
然後 command line 選用 cp950,這種情況是可以正確顯示中文的。
(當然,惱人的許功蓋問題要自行處理)
(可以改用 utf-8,不過 Windows 的 console 在顯示 utf-8 是有點問題的)
如果你是呼叫 Windows API 來顯示中文,比如說 MessageBox,
那會有兩種情況:
1. 你的程式中沒有 #define UNICODE,那麼 MessageBox 會呼叫到
MessageBoxA,接受的是使用 native encoding 的字串,所以你
要把 source 存成 big5。
不過我非常不建議這種作法,big5 是個糟糕的東西。
2. 如果用了 #define UNICODE,那麼 MessageBox 會吃 UCS-2,
因此你要把 source 存成 UCS-2。VC 可以正確編譯 UCS-2 的 source,
但 gcc 似乎是沒辦法。
另一種解法是用 utf-8 存 source,然後輸出前轉成 UCS-2。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.151.2
推 idlekick:感謝大大提供,我是用記事本打開CPP把亂碼改掉 在compile 03/27 19:47
→ idlekick:麻煩點就是了^_^ 03/27 19:47