日本のテキストエディタは基本的に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
こんにちは!


それなりに広い知識を持ってれば自己解決できそうだけど、ユーザーがそんな人ばかりなわけはないです。だから素人でも初心者でも上級者でも、公平に簡単に扱えるものを作らないといけない。
ソフトウェアは面倒がないように、見た目だけでなく中身もデザインされてるわけですが、国際的なソフトウェアを作るのならロケールに応じて初期設定の文字コードを変更してくれるような機能が必要なんでしょーね!