”~”文字は2種類ある
Javaで文字コードを扱うと、たいてい一度はバグとして現れる文字化け問題です。
“~”という文字がいつも化けます。
よく使う文字なのに、なぜこんなに当たり前に文字化けするのか??
この図のように拡大してみると、微妙な差が分かると思います。
普段目にするのはおそらくMS932のほうだと思いますが、
こうやって比べてみないと気付かないですね。
明朝体は見た目が違うのですが、ゴシック体では見分けがつきません。
プログラム開発では、ほとんどの場合ゴシック体を使うので、
プログラム中に混在していたとしてもまったく気づかないです。
MS932とShift_JISでこの文字の文字コードがそれぞれ違うために、文字化け問題が発生します。
画面上での入力はMS932で行い、
それをサーバ内でShift_JISに置き換えようとすると、文字コードが違うために化けます。
UTF-8の場合は、どちらの文字も定義されているため、文字化けは発生しません。
UTF-8を使えば何も困らないというのが結論なのですが、なかなかUTF-8への移行は進みません。
実際にはブラウザやエディタ、メーラーがかしこくできていて、この問題を吸収してしまっているために、
一般的には問題ならないのが、逆にプログラマにとっては問題になってきます。
プログラムを組む際には、実際の文字コードとエンコーディングに着目し、文字化けしている原因を突き止めましょう。
Java内では”Shift_JIS”は使わずに、”MS932″を使用するのが間違いは少なくなるかと思います。
UTF-8だけで処理できるように実装するのがベストかもしれません。
(半角、全角を区別しようとすると、Shift_JISへの変換が必要になってくるんですが。。。)
== ランキングに参加しています。ぜひクリックお願いします ==
[Java] 全角のみか、半角のみかを判断する [Excel] Excelのユーザー定義書式に条件指定で値が変わるように指定する