Provided by: libunicode-japanese-perl_0.23-1_i386 bug

NAME

       Unicode::Japanese - 日本語文字コード変換

SYNOPSIS

       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;

DESCRIPTION

       Unicode::Japanese
       は,日本語の文字コードの相互変換を行うモジュールです.

       FEATURES

       以下のような特徴があります.

       o Unicode::Japanese のインスタンスは,UTF-8 で文字列を保持します.

       o XS 使用/不使用を共にサポートしています. XS
         版はパフォーマンスが必要な場合に, No-XS
         版は手軽に使用したい場合に使用して下さい (Japanese.pm
         をコピーするだけで動作します).

       o 全角半角変換,カタカナひらがな変換をサポートしています.

       o 携帯電話 (DoCoMo i-mode,ASTEL dot-i,J-PHONE J-Sky) の絵文字を
         Unicode 私用領域にマッピングすることで,DB 等で安全に扱うことがで-
         ます.

       o 異なる携帯電話同士で,同じイメージの絵文字は相互変換することが可能です.

       o SJIS は, MS-CP932 とみなして Unicode とマッピングを行います.

       o Unicode -> SJIS(及びEUC-JP/JIS) のマッピング時,SJIS で表現で-
         ない文字は &#dddd; 形式に変換します.
         ただしUnicode私用領域におかれている絵文字は '?'になります. また,
         携帯電話向けの変換時には, すべての対応しない文字は'?'になります.

METHODS

       $s = Unicode::Japanese->new($str [, $icode [, $encode]])
         新しい Unicode::Japanese インスタンスを指定します.
         パラメータを指定すると,set メソッドに渡されます.

       $s->set($str [, $icode [, $encode]])
         $str: 文字列
         $icode: 文字コード指定.省略可.省略時は 'utf8'
         $encode: 文字エンコード.省略可.

         インスタンスに文字列をセットします. 文字コード指定を省略すると 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,の場合,文字列中の &#dddd; は
         絵文字に変換されます.

       $str = $s->get
         $str: 文字列(UTF-8)

         文字列を UTF-8 コードで取り出します.

       $code = $s->getcode($str)
         $str: 文字列
         $code: 文字コードを表す文字列

         渡された文字列($str)の文字コードを自動判別します. この関数では,
         例外的に,
         インスタンスに保持されている文字列のコードを判別するのではないことに注意してください.

         文字コード自動判別時は,以下のアルゴリズムにより判定が行われます.

         (PurePerl時)

         1   UTF-32 の BOM があれば,utf32 と判定します.

         2   UTF-16 の BOM があれば,utf16 と判定します.

         3   UTF-32BE として正しい形式なら,utf32-be と判定します.

         4   UTF-32LE として正しい形式なら,utf32-le と判定します.

         5   非 ASCII 文字が含まれていなければ, ascii と判定します. (非
             ASCII
             文字には,エスケープシーケンス以外のコントロールコードは含まれません.)

         6   JISエスケープシーケンスが含まれていれば,jis と判定します.

         7   J-PHONE の絵文字が含まれていれば,sjis-jsky と判別します.

         8   EUC-JP コードとして正しい形式なら,euc と判定します.

         9   SJIS コードとして正しい形式なら,sjis と判定します.

         10  SJIS と i-mode の絵文字として正しい形式なら,sjis-imode
             と判別します.

         11  SJIS と dot-i の絵文字として正しい形式なら,sjis-doti
             と判別します.

         12  UTF-8 として正しい形式なら,utf8 と判定します.

         13  いずれにも当てはまらない場合,unknown と判定します.

         (XS時)

         1   UTF-32 の BOM があれば,utf32 と判定します.

         2   UTF-16 の BOM があれば,utf16 と判定します.

         3   以下のコードについて,
             正しい文字コードであることを状態遷移を用いて調べます.

             ascii / euc-jp / sjis / jis / utf8 / utf32-be / utf32-le / sjis-
             jsky / sjis-imode / sjis-doti

         4   最後まで正しかったものの中から, 以下の優先順で1つをえらんで,
             それと判定します.

             utf32-be / utf32-le / ascii / jis / euc-jp / sjis / sjis-jsky /
             sjis-imode / sjis-doti / utf8

         5   いずれにも当てはまらない場合,unknown と判定します.

         以上のアルゴリズムのため,以下の点に注意してください.

         * UTF-8 文字列でも,SJISコードと見なされる可能世あります.

         * UCS2 の自動判別はでい泙擦鵝

         * UTF-16 は BOM がある場合のみ自動認識します.

         * 携帯絵文字は,バイナリで直接絵文字がある場合のみ認識でい泙后
            &#dddd; 形式で-
           述されている場合は,携帯絵文字の自動判別は行われません. (&#dddd;
           のみの場合,参照先が異なるため,その後 getcode() の結果を
           基に変換を行うと,絵文字が化けます.)

         XSとPurePerlでは, 判別のアルゴリズムに違いがあるため,
         異なる結果になる可能世あります.  特に,
         エスケープ文字を含んでいるsjisの場合, PurePerlではsjisと認識しますが
         XSでは認識しません. これはsjis-jskyと区別でい覆なるためです. また,
         この 作用による誤認識を防ぐため, euc-jpにおいても,
         同様にエスケープ文字を受け付けなく なっています.

       $str = $s->conv($ocode, $encode)
         $ocode: 出力コード 'jis', 'sjis', 'euc', 'utf8', 'ucs2', 'ucs4',
         'utf16', 'binary', の中から指定.
         $encode: 文字エンコード.省略可.
         $str: 文字列(UTF-8)

         文字列を指定した文字コードに変換してから取り出します.

         文字エンコードには,'base64' のみ指定可能です. base64
         を指定した場合は,base64 エンコードされた 文字列が返されます.

       $s->tag2bin
         文字列中に含まれる &#dddd; 形式の文字列を,それが表す文字自体に置-
         換えます.

       $s->z2h
         全角を半角に変換します.

       $s->h2z
         半角を全角に変換します.

       $s->hira2kata
         ひらがなをカタカナに変換します.

       $s->kata2hira
         カタカナをひらがなに変換します.

       $str = $s->jis
         $str: 文字列(JIS)

         文字列を JIS(ISO-2022-JP) コードで取り出します.

       $str = $s->euc
         $str: 文字列(EUC-JP)

         文字列を EUC-JP コードで取り出します.

       $str = $s->utf8
         $str: 文字列(UTF-8)

         文字列を UTF-8 コードで取り出します.

       $str = $s->ucs2
         $str: 文字列(UCS2)

         文字列を UCS2 コードで取り出します.

       $str = $s->ucs4
         $str: 文字列(UCS4)

         文字列を UCS4 コードで取り出します.

       $str = $s->utf16
         $str: 文字列(UTF-16)

         文字列を UTF-16 コードで取り出します. BOMは付い泙擦鵝
         ビックエンディアン形式で返されます.

       $str = $s->sjis
         $str: 文字列(SJIS)

         文字列を SJIS(MS-CP932) コードで取り出します.

       $str = $s->sjis_imode
         $str: 文字列(SJIS/imode絵文字)

         文字列を i-mode端末向けの SJIS コードで取り出します.

       $str = $s->sjis_doti
         $str: 文字列(SJIS/dot-i絵文字)

         文字列を dot-i端末向けの SJIS コードで取り出します.

       $str = $s->sjis_jsky
         $str: 文字列(SJIS/j-sky絵文字)

         文字列を j-sky端末向けの SJIS コードで取り出します.

       @str = $s->strcut($len)
         $len: 分割する文字数
         @STR: 文字列

         $lenで指定された文字数以下の文字列の配列に分割します.

       $len = $s->strlen
         $len: 文字列の表示幅

         UTF-8 文字に対して length() を使うと全角文字は1文字あたり長さ 3
         になってしまいますが, このメソッドを使用すると,従来の SJIS
         のように,全角文字は1文字あたり長さ 2 を返します.

       $s->join_csv(@values);
         @values: データ配列

         配列を CSV 文字列に変換し,インスタンスに格納します.
         文字列の最後には改行("\n")が追加されます.

       @values = $s->split_csv;
         @values: データ配列

         インスタンスに格納されている文字列を CSV と見なし,配列に分割します.
         文字列の最後にある改行("\n")は取り除かれてから分割されます.

UNICODE MAPPING

       Unicode とのマッピングは以下のように行われます.

       SJIS
         MS-CP932 として Unicode へマッピングを行います.
         マッピングテーブルは以下のURLのものを使用しています.

         ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT

         Unicode から SJIS へマッピングする場合に,表現でい覆な源があると,
         その文字は &#dddd;
         形式に変換します.ただし,携帯絵文字は「?」に変換されます.

         また,携帯向けの SJIS へ変換するとい蓮ち瓦討良集修任-
         ない文字は「?」に変換されます.

       EUC-JP/JIS
         一度SJISコードに変換してから,Unicode へマッピングします. このと-
         ,SJIS で表現でい覆な源が含まれていた場合,
         その文字は正しくマッピングでい泙擦鵝

       DoCoMo i-mode
         F800 - F9FF の領域のうち絵文字が存在する部分を,U+0FF800 - U+0FF9FF
         の領域にマッピングします.

       ASTEL dot-i
         F000 - F4FF の領域のうち絵文字が存在する部分を,U+0FF000 - U+0FF4FF
         の領域にマッピングします.

       J-PHONE J-SKY
         J-SKY の絵文字は,エスケープシーケンス "\e\$"
         の後に,絵文字1バイト目, 1つ以上の絵文字2バイト目,"\x0f",と続-
         ます.
         1バイト目が同じ絵文字が続く場合は,2バイト目のみを連続して書くことで圧縮することがで-
         ます.

         この1バイト目と2バイト目のペアを1文字と見なして,4500 - 47FF
         の領域を, U+0FFB00 - U+0FFDFF の領域にマッピングします.

         Unicode::Japanese では,Unicode から J-SKY 絵文字にマッピングすると-
         ,
         バイト目が同じ絵文字が連続している場合は,圧縮処理を自動的に行います.

PurePerl mode

       use Unicode::Japanese qw(PurePerl);
        と引数で与えることで, XSを使わないことを明示的に宣言でい泙.

BUGS

       o EUC-JP,JIS コードは,SJIS に変換されてから UTF-8 へ変換されるため,
         SJIS で表現でい覆な源列は正しく変換することはでい泙擦鵝

       o XSを使用している場合,EUC-JP,SJIS(絵文字含む)コードの文字列中に \e
         が含まれると,EUC-JP,SJIS コードの判定に失敗し,
         正しく自動判別や変換を行うことが出来ません.

       o Japanese.pm はファイル後半にバイナリを含むため,FTP の ASCII モードで
         転送するとファイルが壊れます.

AUTHOR INFORMATION

       Copyright 2001-2002 SANO Taku (SAWATARI Mikage) and YAMASHINA Hio.  All
       right resreved.

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

       Bug reports and comments to: mikage@cpan.org.  Thank you.

CREDITS

       Thanks very much to:

       NAKAYAMA Nao

       SUGIURA Tatsuki & Debian JP Project