〜が文字化けする。

EUC-JP+Javaの組み合わせで開発を行っていると、
どうも、「〜」という文字が「潤オ」という文字に化けてしまう。


いろいろ調べた結果、
http://software.fujitsu.com/jp/manual/manualfiles/M050002/B1WN5131/01/note03/note0128.htm

http://ja.wikipedia.org/wiki/%E6%B3%A2%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5


こういうことらしい。


要するに、Windowsで採用している字形とUnicodeの字形の、
認識の違い、つーか、間違い?から始まっているらしい。

以下引用すると、

なお、Windows同梱フォントのU+301Cの字形が右下がりから始まる一般的でない形を採用したのは、Unicode仕様書の例示字形にひきずられたものと考えられる。同仕様書ではU+301Cに「JIS punctuation」(The Unicode Standard, Version 2.0より引用)という注釈を施しておきながら、JISの波ダッシュの例示字形と異なる形を印刷してしまった。このことが混乱の大元と考えられる。なお、Windows Vistaに搭載されるフォント「メイリオ」では、U+301Cが一般的な波ダッシュの形(JISの例示字形と同じもの)に修正されている。

・・・とある。
Windowsの仕様書が間違ってるのかよ。


これは、javaのキャラクターセット関連を弄っても直らんし、
解決するには、文字コードUTF-8にするとか、そういう仕様がベストなのかと思われるが、
いまさら、そんなこと言われても。


というわけで、ネット上から拾ったメソッドを実装して、
文字コードをひとつずつ変換して対応。


http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32324&forum=12



IEの既知の問題で、Firefoxでは通常通り表示される。



結局解決に半日つぶしてしまい、Microsoftを殴りたいキモチでいっぱいになった。