the_social_network  

(圖片來源: 電影《社群網站 The Social Network》)

近來想說重新複習一下許久沒碰的JAVA
就決定參考林信良老師(良葛格)先前開放的JAVA SE6的技術手冊全文
有空時就邊看邊練習, 重新打個底這樣

為了讓基礎紮實一點,這次我打算先不在IDE上做編輯,而是直接用Notepad++這套文字編輯軟體
PS. 其實我覺得這套跟記事本比起來真的是大躍進了.....lol

不過,在編譯某個小練習時噴了這個錯誤出來: unmappable character for encoding MS950

Image1  

二話不說 怒關電腦洗洗睡了 Google這個錯誤訊息後,找到了這篇文章
原來是因為Notepad++預設是採UTF8編碼,而在JAVA編譯程式時,則是採用作業系統預設的編碼(也就是MS950)
(註: 在Windows環境下,預設的編碼是MS950,也就是我們常看到的ANSI編碼)
所以當要被編譯的檔案是使用UTF8編碼,在有中文字的地方就會出錯

補充:詳細原因可以閱讀良葛格整理的這篇文章: 你的原始碼是什麼編碼?

所以,針對這個問題的解決辦法有二:
1. 在編譯時指定採用的編碼為UTF8,EX: javac -encoding utf-8 example.java
執行結果:

Image2  

2. 在Notepad++上先將檔案存為ANSI編碼的格式
執行結果:

Image3  

那麼,為什麼最早開始學JAVA時沒遇過這問題呢? 我想原因是因為Windows的記事本
他的存檔類型預設就是以ANSI做編碼(如下圖所示),所以就天真的編譯成功。。。(?) 哈哈

Image4  

以上若有觀念錯誤的地方還請大家不吝指正,謝謝:)

 

References:
1. http://lyhpcha.blogspot.tw/2013/08/java-unmappable-character-for-encoding.html
2. http://pcwiki.pixnet.net/blog/post/96370531
3. http://openhome.cc/Gossip/Encoding/SourceFile.html

 

 

 

arrow
arrow
    全站熱搜

    府低 發表在 痞客邦 留言(5) 人氣()