.zip"
シフトJISコードの文字列をUTF-8コードに変換する Perl スクリプトです。
シフトJISコードでエンコードされた日本語文字列をUTF-8コードでのエンコードに変換する Perl スクリプトです。
Perl 5.8.x以降では文字コードの相互変換が標準モジュールとして実装されているため余り役に立たないものと思われますが、旧式のPerl 5.0xなどで利用される場合には役に立つでしょう。
尚、
また、シフトJISコードから外れるマルティバイト文字は、変換の際に削除されます。
解凍したスクリプトはお好きなディレクトリにシフトJISコードで設置して下さい。
当該スクリプトを利用する場合は、当該スクリプトをrequire
文で呼び出してから、以下のように変換したい文字列を変数に入れて呼び出します。
&m_utf::sjis2utf8(\$str);
呼出し後に、この変数には変換後の文字列が入ります。
シフトJISコードは、JISの区点コードを単純な公式で変換したものです。
同様にJISの区点コードを単純な公式で変換したISO-2022-JPコード(いわゆるJISコード)やEUC日本語文字コードは、元が同じ区点コードなので、当然相互変換も比較的単純に出来ます。
しかしながら、UTF-8コードは、JISの区点コードではなくユニコードを公式で変換したもので、従ってシフトJISコード等との相互変換公式は存在しません。
このため、漢字コード一つ一つに対応した変換表が必要になります。
このシフトJISコードからUTF-8コードに変換するスクリプトでは、変換表を予めハッシュの定義の形で用意しておき、それを正規表現で頭から順に逐一変換していくようにしております。
記号, 仮名文字, 第一水準, 第二水準など何千もある文字を一つ一つ表にするのは大変です。
今回は、Perl 5.8を利用して、
と言う処理を行うスクリプトを作成して、それで変換表のみならずスクリプト本体を生成しました。
表
」など後半オクテットが「\
」となる文字については、後ろに「\
」をつけるなどして処理しております。このお蔭で、僅か数時間で完成しました。