環(huán)境:win10,idea13.1.1
我是個(gè)idea的忠實(shí)用戶(hù),新公司的項(xiàng)目都是用eclipse做的,通過(guò)svn拉下代碼后發(fā)現(xiàn),注釋的內(nèi)容里,中文內(nèi)容都是亂碼。問(wèn)過(guò)項(xiàng)目負(fù)責(zé)人,說(shuō)可能是GBK編碼。
但是,我通過(guò)idea的setting設(shè)置了編碼,試了5種編碼都沒(méi)用,中文內(nèi)容還是亂碼。最后還是自己試出來(lái)解決方案。
詳細(xì)的原因請(qǐng)參考最后的講解。
亂碼示例圖
下面來(lái)介紹解決方法
第一步是點(diǎn)擊右下角,如圖所示的位置,然后選擇GBK(由于我的項(xiàng)目之前是GBK編碼,所以在這里我要是選擇的GBK)。另外提醒一點(diǎn),如果你的idea右下角沒(méi)有這個(gè)按鈕,請(qǐng)?jiān)谀愕木幋a界面中隨意右鍵,然后選擇“File Encoding”,效果一樣。
第二步會(huì)出現(xiàn)如下提示,這里很重要,不要選錯(cuò),先選擇“Reload”,這里請(qǐng)嚴(yán)格按照我說(shuō)的來(lái),文章后面會(huì)告訴你如果選錯(cuò)會(huì)有什么后果
第三步,就是再次點(diǎn)擊這個(gè)地方,然后選擇UTF-8格式
最后一步就是選擇Convert,這就結(jié)束了
相信有些朋友已經(jīng)有點(diǎn)頭緒了。這個(gè)“Reload”選擇后不會(huì)改變文件和內(nèi)容的編碼格式,而是將IDE本身的解碼格式由我原先的UTF-8換成了GBK,由GBK的解碼格式解GBK的文件就不會(huì)再看到亂碼。而“Convert”是將GBK格式的文件內(nèi)容轉(zhuǎn)換成了UTF-8,同時(shí)將IDE的解碼格式也換成UTF-8。
所以之前說(shuō)的,如果你第一次選擇了“Convert”那么就會(huì)由原來(lái)的亂碼弄成另一種亂碼,反正我是沒(méi)弄回來(lái)過(guò)。好在我是在git的branch上做的實(shí)驗(yàn),我的源碼文件還保留著,所以沒(méi)有問(wèn)題。
在以上的基礎(chǔ)上,我猜測(cè)idea對(duì)java文件的編輯,應(yīng)該是讀取文件內(nèi)容,并以IDE本身指定的encoding來(lái)進(jìn)行解讀。
舉例,如果IDE的encoding為GBK,而java文件是UTF8那么IDE讀取文件的時(shí)候就會(huì)顯示亂碼,如果這個(gè)時(shí)候使用上文所說(shuō)的“Convert”來(lái)講亂碼轉(zhuǎn)換成UTF8文件。
重點(diǎn)來(lái)了,這個(gè)時(shí)候文件本身是UTF8格式編碼,轉(zhuǎn)成UTF8格式應(yīng)該是不會(huì)有問(wèn)題的。但結(jié)果是,你由GBKencoding換成用UTF8的encoding去解碼這個(gè)文件發(fā)現(xiàn)還是亂碼。
原因是由于IDE用GBK讀取UTF8文件時(shí)顯示的是亂碼,文件并沒(méi)有亂碼,而是IDE讀取出來(lái)的文件由于encoding解碼不對(duì)才顯示的亂碼。那么你這個(gè)時(shí)候使用“Convert”不過(guò)是將IDE讀取的內(nèi)容轉(zhuǎn)換成了UTF8,而并非是將文件內(nèi)容轉(zhuǎn)換成UTF8。就這么一個(gè)微小的區(qū)別,但結(jié)果卻是完全不可控制的。
聯(lián)系客服