基礎からやさしく学べるブログだよ☆2014年6月2日月曜日Classファイルの文字コード30億のデバイスで化けないJava。Shift_JISとSJISは必ずしも一致しなかった。文字コードはUTF-8に統一されつつあるが、未だに悩ましい問題の一つだ。JavaのClassファイルとAndroid.javaファイルはコンパイルすると.classファイルになる。AndroidのDalvikVMではこのClassファイルをDxにより、1つのclasses.dexなるファイルにまとめる。Classファイルの文字コードJavaファイルを書くときはその文字コードを気にすることもあるだろう。(とはいえUTF-8一択だ。「気にする」というのはUTF-8になっているかどうかを気にするのだ)しかしClassファイルの文字コードを気にしたとこはあるだろうか?Shift_JISでエンコードされたJavaファイルをClassファイルにコンパイルしたとしよう。クラスローダーはこのClassの文字コードをどのように判断しているのだろうか。Classファイルにおいて文字列の文字コードは統一されているのだ。UTF-8っぽいやつClassファイルのなかで文字列は「UTF-8っぽい」文字コードで表現される。それゆえ、Javaはコンパイル後に文字化けすることがない。指定するタイミングJavaファイルをClassファイルにコンパイルするときに、Javaファイルの文字コードを指定してあげる。javacのオプションに-encodingがある。