Unicode::Japanese - 日本語文字コード変換
use Unicode::Japanese;
# convert utf8 -> sjis
print Unicode::Japanese->new($str)->sjis;
# convert sjis -> utf8
print Unicode::Japanese->new($str, 'sjis')->get;
# convert sjis(imode絵文字) -> utf8
print Unicode::Japanese->new($str, 'sjis-imode')->get;
# convert 全角(utf8) -> 半角(utf8)
print Unicode::Japanese->new($str)->z2h->get;
Unicode::Japanese は,日本語の文字コードの相互変換を行うモジュールです. 以下のような特徴があります.
インスタンスに文字列をセットします. 文字コード指定を省略すると UTF-8 と見なされます.
文字コードを指定する場合は,'jis', 'sjis', 'euc', 'utf8', 'ucs2', 'ucs4', 'utf16', 'utf16-ge', 'utf16-le', 'utf32', 'utf32-ge', 'utf32-le', 'ascii','binary', 'sjis-imode', 'sjis-doti', 'sjis-jsky', のいずれかを指定します.
文字コードを自動判別する場合は,'auto' を指定します.
文字エンコードには,'base64' のみ指定可能です. base64 を指定した場合は,base64 デコードされてから String クラスの文字列となります.
バイナリをデコードする場合は,文字エンコードタイプとして 'binary' を指定します.
'auto' 時の文字コード自動判別は,getcode メソッドにより 行われます.
sjis-imode,sjis-doti,の場合,文字列中の &#xxxx; は 絵文字に変換されます.
文字列を UTF-8 コードで取り出します.
getcode($str)文字列の文字コードを自動判別します. インスタンスに保持されている文字列のコードを判別するのではないことに注意してください.
文字コード自動判別時は,以下のアルゴリズムにより判定が行われます.
以上のアルゴリズムのため,以下の点に注意してください.
文字列を指定した文字コードに変換してから取り出します.
文字エンコードには,'base64' のみ指定可能です. base64 を指定した場合は,base64 エンコードされた 文字列が返されます.
文字列を JIS(ISO-2022-JP) コードで取り出します.
文字列を EUC コードで取り出します.
文字列を UTF-8 コードで取り出します.
文字列を UCS2 コードで取り出します.
文字列を UCS4 コードで取り出します.
文字列を UTF-16 コードで取り出します. BOMは付きません. ビックエンディアン形式で返されます.
文字列を SJIS(MS-CP932) コードで取り出します.
文字列を i-mode端末向けの SJIS コードで取り出します.
文字列を dot-i端末向けの SJIS コードで取り出します.
文字列を j-sky端末向けの SJIS コードで取り出します.
strcut($len)\@STR : 文字列
指定文字数以下の文字列の配列に分割します.
UTF-8 文字に対して length() を使うと全角文字は長さ 3 になってしまいますが,
このメソッドを使用すると,従来のSJISのように,全角文字は長さ 2 を返します.
配列をCSV文字列に変換し,インスタンスに格納します. 文字列の最後には改行(\n)が追加されます.
インスタンスに格納されている文字列をCSVと見なし,配列に分割します. 文字列の最後にある改行は取り除かれてから分割されます.
Unicode とのマッピングは以下のように行われます.
ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT
Unicode から SJIS へマッピングする場合に,表現できない文字があると,その文字は &#xxxx; 形式に変換します. ただし,携帯絵文字は「?」に変換されます.
また,携帯向けの SJIS へ変換するときは,全ての表現できない文字は「?」に変換されます.
この1バイト目と2バイト目のペアを1文字と見なして,4500 - 47FF の領域を,U+0FFB00 - U+0FFDFF の領域にマッピングします.
Unicode::Japanese では,Unicode から J-SKY 絵文字にマッピングするとき,バイト目が同じ絵文字が連続している場合は,圧縮処理を自動的に行います.
SANO Taku (SAWATARI Mikage) <mikage@cpan.org>
Copyright 2001, SANO Taku
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.