日本のテキストエディタは基本的にShift_JISなんだぜ?
人によっては自然なことすぎて案外きづかない。また、人によっては文字コードってなに???ということで全くきづかない。
日本製の一般的なテキストエディタ、例えばサクラエディタやMIFESでは指定しない限りShift_JISで保存されます。だからこそ普通につかえる。
EditraってUTF-8でしか保存できません。となるとこのような弊害がでます。以下はJavaのHelloWorld。
class Test { public static void main(String[] args) { System.out.println("こんにちは!"); } }
コマンドプロンプトからjavacコマンドでコンパイルします。
javac Test.java D:\lab\Java> javac Test.java Test.java:3: 警告:この文字は、エンコーディング MS932 にマップできません。 System.out.println("縺薙s縺ォ縺。縺ッ?シ?"); ^ Test.java:3: 警告:この文字は、エンコーディング MS932 にマップできません。 System.out.println("縺薙s縺ォ縺。縺ッ?シ?"); ^ 警告 2 個
エラーになっちゃいます。MS932という言葉自体イミフだろうし(Shift_JISのことです)、初心者は間違いなくハマる!テキストエディタと同じように、javacコマンドも初期状態ではShift_JISのコードとして認識するんでしょうね(PCのロケールで自動判別するのかな?)。でも読み込んでいるファイルはUTF-8で書かれているから文字化けしてしまう。
こんな感じでコンパイル時にエンコーディングを指定してあげればOK
D:\lab\Java> javac -encoding UTF-8 Test.java D:\lab\Java> java Test こんにちは!
それなりに広い知識を持ってれば自己解決できそうだけど、ユーザーがそんな人ばかりなわけはないです。だから素人でも初心者でも上級者でも、公平に簡単に扱えるものを作らないといけない。
ソフトウェアは面倒がないように、見た目だけでなく中身もデザインされてるわけですが、国際的なソフトウェアを作るのならロケールに応じて初期設定の文字コードを変更してくれるような機能が必要なんでしょーね!