Unicode::Japanese::JA(3pm) | User Contributed Perl Documentation | Unicode::Japanese::JA(3pm) |
Unicode::Japanese::JA - 日本語文字コード変換
use Unicode::Japanese; use Unicode::Japanese qw(unijp); # convert utf8 -> sjis print Unicode::Japanese->new($str)->sjis; print unijp($str)->sjis; # same as above. # convert sjis -> utf8 print Unicode::Japanese->new($str,'sjis')->get; # convert sjis (imode_EMOJI) -> utf8 print Unicode::Japanese->new($str,'sjis-imode')->get; # convert zenkaku (utf8) -> hankaku (utf8) print Unicode::Japanese->new($str)->z2h->get;
Unicode::Japanese は,日本語の文字コードの相互変換を行うモジュールです.
get() メソッドは現時点では utf-8 `バイト'列 を返します (将来的に変更される可能性もあります).
sjis(), jis(), utf8(), etc.. メソッドではバイト列を返します. new, set, getcode メソッドの入力には, utf8-flaged/bytes を問いません.
実行時に必須なモジュールはありません.
パラメータを指定すると,"set" メソッドに渡されます.
インスタンスに文字列をセットします. 文字コード指定を省略すると UTF-8 と見なされます.
利用可能な文字コード:
auto utf8 ucs2 ucs4 utf16-be utf16-le utf16 utf32-be utf32-le utf32 sjis cp932 euc euc-jp jis sjis-imode sjis-imode1 sjis-imode2 utf8-imode utf8-imode1 utf8-imode2 sjis-doti sjis-doti1 sjis-jsky sjis-jsky1 sjis-jsky2 jis-jsky jis-jsky1 jis-jsky2 utf8-jsky utf8-jsky1 utf8-jsky2 sjis-au sjis-au1 sjis-au2 jis-au jis-au1 jis-au2 sjis-icon-au sjis-icon-au1 sjis-icon-au2 euc-icon-au euc-icon-au1 euc-icon-au2 jis-icon-au jis-icon-au1 jis-icon-au2 utf8-icon-au utf8-icon-au1 utf8-icon-au2 ascii binary
( も参照.)
文字コードを自動判別する場合は,'auto' を指定しなくてはいけません. 'auto' 時の文字コード自動判別は,getcode() メソッドにより 行われます.
バイナリ符号化方式には,'base64' のみ指定可能です. base64 を指定した場合は,base64 デコードされてから Unicode::Japanese クラスの文字列となります.
渡された文字列を変更せずそのまま格納して欲しい場合には,文字コードとして 'binary' を指定します.
sjis-imode,sjis-doti,の場合,文字列中の &#dddd; は 絵文字に変換されます.
文字コードは領域が重なっている場合があるため, 自動判別は確実ではありません.
sjis, utf8 の両方に解釈できる文字列の場合は,sjis, sjis-au,sjis-doti の両方に解釈できる文字列の場合は,sjis-au, を返します.
文字列を UTF-8 コードで取り出します.
現在は `バイト' 列 を返しますが, 将来的に変更される可能性もあります.
バイト列が必要なら utf8() メソッドを, 文字列が必要なら getu() メソッドを使うことをオススメします.
文字列を UTF-8 コードで取り出します.
Perl-5.8.0 以降においては, utf-8 フラグのついた utf-8 文字列として 返します.
渡された文字列($str)の文字コードを自動判別します.
この関数では, 例外的に, インスタンスに保持されている 文字列のコードを判別するのではないことに注意してください.
文字コード自動判別時は,以下のアルゴリズムにより判定が行われます.
(PurePerl時)
(XS時)
ascii / euc / sjis / jis / utf8 / utf32-be / utf32-le / sjis-jsky / sjis-imode / sjis-au / sjis-doti
utf32-be / utf32-le / ascii / jis / euc / sjis / sjis-jsky / sjis-imode / sjis-au / sjis-doti / utf8
以上のアルゴリズムのため,以下の点に注意してください.
XSとPurePerlでは, 判別のアルゴリズムに違いがあるため, 異なる結果になる可能性があります. 特に, エスケープ文字を含んでいるsjisの場合, PurePerlではsjisと認識しますが XSでは認識しません. これはsjis-jskyと区別できなくなるためです. また, この 作用による誤認識を防ぐため, euc-jpにおいても, 同様にエスケープ文字を受け付けなく なっています.
渡された文字列($str)の文字コードを自動判別します.
getcode とは違い, すべての受理可能な文字コードの 一覧を返します.
utf8 ucs2 ucs4 utf16 sjis cp932 euc euc-jp jis sjis-imode sjis-imode1 sjis-imode2 utf8-imode utf8-imode1 utf8-imode2 sjis-doti sjis-doti1 sjis-jsky sjis-jsky1 sjis-jsky2 jis-jsky jis-jsky1 jis-jsky2 utf8-jsky utf8-jsky1 utf8-jsky2 sjis-au sjis-au1 sjis-au2 jis-au jis-au1 jis-au2 sjis-icon-au sjis-icon-au1 sjis-icon-au2 euc-icon-au euc-icon-au1 euc-icon-au2 jis-icon-au jis-icon-au1 jis-icon-au2 utf8-icon-au utf8-icon-au1 utf8-icon-au2 binary
( も参照.)
携帯向け文字コードのうち,末尾に数字がついているものは,数字が大きいほど 大きな絵文字セット(最新機種の絵文字セット)を表しています. 数字なしのものは,もっとも数字が大きい文字コードと同一です.
文字列を指定した文字コードに変換してから取り出します.
文字エンコードには,'base64' のみ指定可能です. base64 を指定した場合は,base64 エンコードされた 文字列が返されます.
perl-5.8.0 以降において, 出力は utf-8 フラグを持たないバイト列になります.
文字列を JIS(ISO-2022-JP) コードで取り出します.
文字列を EUC-JP コードで取り出します.
文字列を UTF-8 コードで取り出します.
perl-5.8.0 以降においても, バイト列を返します.
文字列を UCS2 コードで取り出します.
文字列を UCS4 コードで取り出します.
文字列を UTF-16 コードで取り出します. BOMは付きません. ビックエンディアン形式で返されます.
文字列を SJIS(MS-CP932) コードで取り出します.
文字列を i-mode 端末向けの SJIS コードで取り出します. 最新のimode絵文字の別名です.
文字列を i-mode 端末向けの SJIS コードで取り出します. 基本絵文字だけから成ります.
文字列を i-mode 端末向けの SJIS コードで取り出します. 基本絵文字, 拡張絵文字を含みます.
文字列を dot-i 端末向けの SJIS コードで取り出します.
文字列を j-sky 端末向けの SJIS コードで取り出します. 最新のj-sky絵文字(VERSION 0.15 では, jsky2)の別名です.
文字列を j-sky 端末向けの SJIS コードで取り出します. Page 1~3 のみの絵文字を含みます.
文字列を j-sky 端末向けの SJIS コードで取り出します. Page 1~6 の絵文字を含みます.
文字列を AU 端末向けの SJIS コードで取り出します.
$lenで指定された文字数(全角)以下の文字列の配列に分割します.
配列の各要素は, utf-8 フラグを持ったutf-8文字列です.
UTF-8 文字に対して length() を使うと全角文字は1文字あたり長さ 3 になってしまいますが, このメソッドを使用すると,従来の SJIS のように,全角文字は1文字あたり長さ 2 を返します.
配列を CSV 文字列に変換し,インスタンスに格納します. 文字列の最後には改行("\n")が追加されます.
インスタンスに格納されている文字列を CSV と見なし,配列に分割します. 文字列の最後にある改行("\n")は取り除かれてから分割されます.
入力が binary でなければ utf-8 文字列を返します. binary だったときはバイト列を返します.
+---------------+----+-----+-------+ |encoding | in | out | guess | +---------------+----+-----+-------+ |auto : OK : -- | ----- | +---------------+----+-----+-------+ |utf8 : OK : OK | OK | |ucs2 : OK : OK | ----- | |ucs4 : OK : OK | ----- | |utf16-be : OK : -- | ----- | |utf16-le : OK : -- | ----- | |utf16 : OK : OK | OK(#) | |utf32-be : OK : -- | OK | |utf32-le : OK : -- | OK | |utf32 : OK : -- | OK(#) | +---------------+----+-----+-------+ |sjis : OK : OK | OK | |cp932 : OK : OK | ----- | |euc : OK : OK | OK | |euc-jp : OK : OK | ----- | |jis : OK : OK | OK | +---------------+----+-----+-------+ |sjis-imode : OK : OK | OK | |sjis-imode1 : OK : OK | ----- | |sjis-imode2 : OK : OK | ----- | |utf8-imode : OK : OK | ----- | |utf8-imode1 : OK : OK | ----- | |utf8-imode2 : OK : OK | ----- | +---------------+----+-----+-------+ |sjis-doti : OK : OK | OK | |sjis-doti1 : OK : OK | ----- | +---------------+----+-----+-------+ |sjis-jsky : OK : OK | OK | |sjis-jsky1 : OK : OK | ----- | |sjis-jsky2 : OK : OK | ----- | |jis-jsky : OK : OK | ----- | |jis-jsky1 : OK : OK | ----- | |jis-jsky2 : OK : OK | ----- | |utf8-jsky : OK : OK | ----- | |utf8-jsky1 : OK : OK | ----- | |utf8-jsky2 : OK : OK | ----- | +---------------+----+-----+-------+ |sjis-au : OK : OK | OK | |sjis-au1 : OK : OK | ----- | |sjis-au2 : OK : OK | ----- | |jis-au : OK : OK | ----- | |jis-au1 : OK : OK | ----- | |jis-au2 : OK : OK | ----- | |sjis-icon-au : OK : OK | ----- | |sjis-icon-au1 : OK : OK | ----- | |sjis-icon-au2 : OK : OK | ----- | |euc-icon-au : OK : OK | ----- | |euc-icon-au1 : OK : OK | ----- | |euc-icon-au2 : OK : OK | ----- | |jis-icon-au : OK : OK | ----- | |jis-icon-au1 : OK : OK | ----- | |jis-icon-au2 : OK : OK | ----- | |utf8-icon-au : OK : OK | ----- | |utf8-icon-au1 : OK : OK | ----- | |utf8-icon-au2 : OK : OK | ----- | +---------------+----+-----+-------+ |ascii : OK : -- | OK | |binary : OK : OK | ----- | +---------------+----+-----+-------+ (#): guessed when it has bom.
1. utf32 (#) 2. utf16 (#) 3. utf32-be 4. utf32-le 5. ascii 6. jis 7. sjis-jsky (pp) 8. euc 9. sjis 10. sjis-jsky (xs) 11. sjis-au 12. sjis-imode 13. sjis-doti 14. utf8 15. unknown
Unicode とのマッピングは以下のように行われます.
<ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT>
Unicode から SJIS へマッピングする場合に,表現できない文字があると, その文字は &#dddd; 形式に変換します. ただし,携帯絵文字は「?」に変換されます.
また,携帯向けの SJIS へ変換するときは,全ての表現できない文字は「?」に変換されます.
この1バイト目と2バイト目のペアを1文字と見なして,4500 - 47FF の領域を, U+0FFB00 - U+0FFDFF の領域にマッピングします.
Unicode::Japanese では,Unicode から J-SKY 絵文字にマッピングするとき, 1バイト目が同一である絵文字が連続している場合は,圧縮処理を自動的に行います.
use Unicode::Japanese qw(PurePerl);
use 時の引数に 'PurePerl' を与えることで, XSを使わないことを明示的に宣言できます.
バグや要望は "bug-unicode-japanese at rt.cpan.org" 宛に 報告してください. 若しくは <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Unicode-Japanese>. にある web インターフェースからでもかまいません. そこから私に通知され, そして私が変更を行うことで報告頂いたバグの進捗は 自動的にあなたに伝わります.
このモジュールのドキュメントは perldoc コマンドで見ることが出来ます.
perldoc Unicode::Japanese
また, 以下の場所でも見ることが出来ます:
<http://annocpan.org/dist/Unicode-Japanese>
<http://cpanratings.perl.org/d/Unicode-Japanese>
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Unicode-Japanese>
<http://search.cpan.org/dist/Unicode-Japanese>
Thanks very much to:
NAKAYAMA Nao
SUGIURA Tatsuki & Debian JP Project
Copyright 2001-2008 SANO Taku (SAWATARI Mikage) and YAMASHINA Hio, all rights reserved.
このプログラムはフリーソフトウェアです。あなたは Perl と同じ ライセンスの 元で再配布及び変更を行うことが出来ます.
2020-11-09 | perl v5.32.0 |