No.301 | 投稿日時: | 2005/06/01(水) 09:59 <↑親記事:No.300> |
投稿者: | 森山 将之 |
EUC-JP エンコーディングで機種依存文字を扱うのは困難を伴うので出来れば避けた方がいいです。
機種依存文字対応の EUC-JP は、大きくわけて Windows の EUC-JP である CP51932 と TOG/JVC 策定の eucJP-open (eucJP-ms/eucJP-0201/eucJP-ascii) の 2 種類があります。
OSF 日本ベンダ協議会 (OSF/JVC) 推奨
日本語 EUC ・シフト JIS 間コード変換仕様とコード系実態調査
http://www.opengroup.or.jp/jvc/cde/sjis-euc.html
eucJP-ms/eucJP-0201/eucJP-ascii のコード変換規則
http://www.opengroup.or.jp/jvc/cde/appendix.html
EUC-JP に変換したものを Web ブラウザで表示させるのか、それとも PostgreSQL などのデータベースに格納するのかによって、使い分けが必要になります。
しかし、CP51932、eucJP-open の両方をサポートしているソフトは皆無といっても良い状況ですから、CP51932 を使うべきところに eucJP-open を使ったりすれば機種依存文字の文字化けが発生します。
> こちらjavaアプリケーションで生成したXMLファイルですので
> JIS→UTF8になると思います。
これはどういう事なのでしょうか?
ISO2022JP→UTF-8
SJIS→UTF-8
EUC_JP→UTF-8
MS932→UTF-8
のどれでしょう?
MS932→UTF-8 の場合は、JISの文字について次のページにある『Microsoft CP932との相違』で説明されている文字が iconv() の EUC-JP では変換できません。
JIS-Unicode間の変換表の選択について
http://hp.vector.co.jp/authors/VA010341/unicode/
MS932→UTF-8 で変換されたものを iconv() で EUC-JPエンコーディングに変換するには、eucJP-ms を使用する必要があります。(iconv -l | grep EUCJP-MSで eucJP-ms が使用できるか確認する必要あり)
この場合、機種依存文字は変換可能ですが、Windows の Webブラウザでの EUC-JP は CP51932 で表示しようとしますから、IBM拡張文字が正しく表示できません。eucJP-ms を Windows の Webブラウザで表示させた場合、JIS の文字とNEC特殊文字のみが正しく表示されます。
ちなみに、
ISO2022JP→UTF-8
SJIS→UTF-8
EUC_JP→UTF-8
で変換されたものは、eucJP-ms ではなく EUC-JP で変換する必要があります。
この場合、機種依存文字は変換できません。