プロプログラマ -Flex,Air,C#,Oracle,PHP-

プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます

”~”文字は2種類ある

Javaで文字コードを扱うと、たいてい一度はバグとして現れる文字化け問題です。
“~”という文字がいつも化けます。

よく使う文字なのに、なぜこんなに当たり前に文字化けするのか??

この“~”という文字ですが、実は2種類あるんです。

この図のように拡大してみると、微妙な差が分かると思います。

普段目にするのはおそらくMS932のほうだと思いますが、
こうやって比べてみないと気付かないですね。
明朝体は見た目が違うのですが、ゴシック体では見分けがつきません。

プログラム開発では、ほとんどの場合ゴシック体を使うので、
プログラム中に混在していたとしてもまったく気づかないです。

MS932とShift_JISでこの文字の文字コードがそれぞれ違うために、文字化け問題が発生します。

画面上での入力はMS932で行い、
それをサーバ内でShift_JISに置き換えようとすると、文字コードが違うために化けます。

UTF-8の場合は、どちらの文字も定義されているため、文字化けは発生しません。

UTF-8を使えば何も困らないというのが結論なのですが、なかなかUTF-8への移行は進みません。

実際にはブラウザやエディタ、メーラーがかしこくできていて、この問題を吸収してしまっているために、
一般的には問題ならないのが、逆にプログラマにとっては問題になってきます。

プログラムを組む際には、実際の文字コードとエンコーディングに着目し、文字化けしている原因を突き止めましょう。
Java内では”Shift_JIS”は使わずに、”MS932″を使用するのが間違いは少なくなるかと思います。

UTF-8だけで処理できるように実装するのがベストかもしれません。
(半角、全角を区別しようとすると、Shift_JISへの変換が必要になってくるんですが。。。)

 

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

, ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です