ShiftJIS::CP932::Correct - Windows CP-932の文字列を正しいものにする
use ShiftJIS::CP932::Correct;
$corrected_cp932 = correct_cp932($cp932_string);
Microsoft Code Page 932 (CP-932) のテーブルは、次の7915文字からなります。
JIS X 0201 一バイト文字 (191文字), JIS X 0208 二バイト文字 (6879文字), NEC特殊文字 (SJIS 13区から 83文字), NEC選定IBM拡張文字 (SJIS 89〜92区から 374文字), そして IBM拡張文字 (SJIS 115〜119区から 388文字).
このテーブルには、同じ文字が二重(若干のものは三重)に定義されているために、 Unicodeとの往復変換ができない文字があります。これは NEC および IBM のベンダ定義文字のためです。
例えば、Unicode の U+2252
に対応する CP-932 の文字は、
JIS X 0208 の 0x81e0
と NEC特殊文字の 0x8790
の
2つがあります。
そのため、Unicode から CP-932 への変換プログラムの中には、
U+2252
を、不注意のため 0x81e0
ではなく、
0x8790
に変換するものがあるかもしれません。
このような挙動は好ましくありません。なぜなら、 NEC特殊文字(または他のベンダ定義文字)は互換性が低いからです。
このモジュールは、そのような(正しいことは正しいのだがやはり) 「間違っている」CP-932 文字列を正しいものにします。
このモジュールは、 ``Microsoft PRB: Conversion Problem Between Shift-JIS and Unicode (Article ID: Q170559)'' で提供されたマップを使用しています。
correct_cp932(STRING)
"\x87\x90"
は "\x81\xe0"
に変換されます。
is_corrected_cp932(STRING)
is_cp932(STRING)
correct_cp932 と is_corrected_cp932 はデフォルトで輸出されます。 is_cp932 は要求により輸出できます。
「正しくされた」CP-932 といっても、ベンダ定義文字を含み得るものです。
CP-932は、Shift_JISとは違います。
SADAHIRO Tomoyuki <SADAHIRO@cpan.org> 貞廣 知行
Copyright(C)
2001-2002, SADAHIRO Tomoyuki. Japan. All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.