用javac和gcc/g++進(jìn)行編譯時(shí)的編碼問(wèn)題
By Barron Pun
大家在用javac編譯.java文件缎岗,或者用gcc/g++編譯時(shí)是否遇到過(guò)這樣一個(gè)問(wèn)題鹅心,中文字符會(huì)亂碼格嗅。從而伴隨著一系列的問(wèn)題,什么編譯過(guò)不了之類的。那么這個(gè)時(shí)候我們就需要明白其中的道理,然后再用正確的方法去解決它疹瘦。
舉個(gè)java的例子來(lái)說(shuō),在用javac進(jìn)行編譯的時(shí)候巡球,如果你不指定編碼的方式言沐,那么將會(huì)自動(dòng)選擇當(dāng)前系統(tǒng)的編碼方式來(lái)對(duì)源程序進(jìn)行轉(zhuǎn)換。這個(gè)時(shí)候問(wèn)題就來(lái)了酣栈。因?yàn)閖ava默認(rèn)是utf-8的編碼方式的险胰,而你卻用的其它編碼方式去轉(zhuǎn)換,那勢(shì)必會(huì)造成不能生成對(duì)應(yīng)的.class文件矿筝。用gcc/g++編碼也是一樣的道理起便。
解決辦法:
java中:
在windows下,你可以用記事本打開(kāi)程序窖维,然后點(diǎn)擊另存為榆综,接著選擇編碼方式為ANSI,確定之后再次編譯就可以了铸史。但是這樣難免有些麻煩鼻疮,因?yàn)槊看味家@樣做,所以可以通過(guò)在命令行中進(jìn)行指定來(lái)解決:? ? ? ? ? ? ? ? ? ? ??
javac -encoding utf-8 xxx.java
在gcc/g++中:
類似于java中琳轿,你也可以用記事本來(lái)改變文本的編碼方式判沟,改為ANSI編碼,但是為了方便利赋,也是可以在命令行中解決的水评,在windows中,可以:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
gcc/g++ -fexec-charset=GBK xxx.c/xxx.cpp -o xxx.exe
希望對(duì)大家有幫助媚送,為了驗(yàn)證我說(shuō)的是對(duì)的中燥,以后再貼圖給各位啦!