home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Java/文字コードメモ2 (v1)

Java/文字コードメモ2 (v1)

Java / 文字コードメモ2 (v1)
id: 90 所有者: msakamoto-sf    作成日: 2006-03-14 13:44:36
カテゴリ: Java 

Shift_JIS, MS932, Windows-31J の取り扱いについて実験する。

これらは特にサーバーサイドのJavaを扱う上で何かと文字化けの原因として取りざたされている。今回示す例では、日本語の自然文で普通に使用されるが簡単に文字化けしてしまっている。

"~"の混じったJavaソースを用意する。

public class EncodingW31 {
    public static void main(String[] args) {
        System.out.println("Windows-31J ~・㈱");
    }
}

コンパイルし、実行してみる。

ケース1:Shift_JISとしてコンパイル・実行

画像/Java/java_charactercode_2_1.jpg

上図に示すとおり、見事に文字化けしている。下はclassファイルをUTF-8対応のエディタで文字コード自動認識で開いた図。

画像/Java/java_charactercode_2_2.jpg

ケース2:MS932、あるいはWindows-31Jとしてコンパイル・実行

画像/Java/java_charactercode_2_3.jpg

上図の通り、文字化けせずに表示できた。なお、エディタで開いてみると先と同じく、自動認識ではSJISと判定されてしまった。

なお、こちらの例では"MS932"としていしてコンパイルしたが、 "Windows-31J"を指定しても同じクラスファイルが生成された。 (MD5チェックサムが同一)

結論

サーバーサイドで入力される文字コードがSJISが想定された場合は、"Shift_JIS"で受け取るのではなく"Windows-31J"あるいは"MS932"として受け取るべきである。

参考(Windows-31JとJava関連)



プレーンテキスト形式でダウンロード
表示中のバージョン : 1
現在のバージョン : 3
更新者: msakamoto-sf
更新日: 2015-02-08 00:11:31
md5:1f8be87d61ec48324927b7ae969ebe93
sha1:f69a12d04cd7deafbdd6805d69ad07597237ead2
コメント
コメントを投稿するにはログインして下さい。