.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Unicode::Japanese::JA 3pm" .TH Unicode::Japanese::JA 3pm 2024-03-07 "perl v5.38.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME Unicode::Japanese::JA \- 日本語文字コード変換 .SH 概要 .IX Header "概要" .Vb 2 \& 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,\*(Aqsjis\*(Aq)\->get; \& \& # convert sjis (imode_EMOJI) \-> utf8 \& \& print Unicode::Japanese\->new($str,\*(Aqsjis\-imode\*(Aq)\->get; \& \& # convert zenkaku (utf8) \-> hankaku (utf8) \& \& print Unicode::Japanese\->new($str)\->z2h\->get; .Ve .SH 説明 .IX Header "説明" Unicode::Japanese は,日本語の文字コードの相互変換を行うモジュールです. .SS 機能 .IX Subsection "機能" .IP \(bu 2 Unicode::Japanese のインスタンスは,UTF\-8 で文字列を保持します. .IP \(bu 2 XS 使用/不使用を共にサポートしています. XS 版はパフォーマンスが必要な場合に, No-XS 版は手軽に使用したい場合に使用して下さい (Japanese.pm をコピーするだけで動作します). .IP \(bu 2 全角半角変換,カタカナひらがな変換をサポートしています. .IP \(bu 2 携帯電話 (DoCoMo i\-mode,KDDI AU, Softbank Mobile, ASTEL dot-i) の絵文字を Unicode 私用領域にマッピングすることで,DB 等で安全に扱うことができます. .IP \(bu 2 異なる携帯電話同士で,同じイメージの絵文字は相互変換することが可能です. .IP \(bu 2 SJIS は, MS\-CP932 とみなして Unicode とマッピングを行います. .IP \(bu 2 Unicode \-> SJIS(及びEUC\-JP/JIS) のマッピング時,SJIS で表現できない文字は &#dddd; 形式に変換します. ただしUnicode私用領域におかれている絵文字は \&'?'になります. また, 携帯電話向けの変換時には, すべての対応しない文字は'?'になります. .IP \(bu 2 Perl\-5.8.0 以降において, utf8 フラグの設定処理を行います. utf\-8 `バイト'列 の取得には \fButf8()\fR メソッドを, utf\-8 `文字'列 の取得には \fBgetu()\fR メソッドを使います. .Sp \&\fBget()\fR メソッドは現時点では utf\-8 `バイト'列 を返します (将来的に変更される可能性もあります). .Sp \&\fBsjis()\fR, \fBjis()\fR, \fButf8()\fR, etc.. メソッドではバイト列を返します. new, set, getcode メソッドの入力には, utf8\-flaged/bytes を問いません. .SH 動作に必要なもの .IX Header "動作に必要なもの" .IP \(bu 4 perl 5.10.x, 5.8.x, etc. (5.004 以降). .IP \(bu 4 (なくてもOK) C コンパイラ. このモジュールは XS と Pure Perl 両方に対応しています. C コンパイラがないときには, Unicode::Japanese は Pure Perl モジュールとしてインストールされます. .IP \(bu 4 (なくてもOK) テスト用に Test.pm 及び Test::More. .PP 実行時に必須なモジュールはありません. .SH メソッド .IX Header "メソッド" .ie n .IP "$s = Unicode::Japanese\->new($str [, $icode [, $encode]])" 4 .el .IP "\f(CW$s\fR = Unicode::Japanese\->new($str [, \f(CW$icode\fR [, \f(CW$encode\fR]])" 4 .IX Item "$s = Unicode::Japanese->new($str [, $icode [, $encode]])" 新しい Unicode::Japanese インスタンスを指定します. .Sp パラメータを指定すると,"set" メソッドに渡されます. .ie n .IP "$s = unijp($str [, $icode [, $encode]])" 4 .el .IP "\f(CW$s\fR = unijp($str [, \f(CW$icode\fR [, \f(CW$encode\fR]])" 4 .IX Item "$s = unijp($str [, $icode [, $encode]])" Unicode::Janaese\->new(...) と同義. .ie n .IP "$s\->set($str [, $icode [, $encode]])" 4 .el .IP "\f(CW$s\fR\->set($str [, \f(CW$icode\fR [, \f(CW$encode\fR]])" 4 .IX Xref "set" .IX Item "$s->set($str [, $icode [, $encode]])" .RS 4 .PD 0 .ie n .IP "$str: 文字列" 2 .el .IP "\f(CW$str:\fR 文字列" 2 .IX Item "$str: 文字列" .ie n .IP "$icode: 文字コード指定.省略可.省略時は 'utf8'" 2 .el .IP "\f(CW$icode:\fR 文字コード指定.省略可.省略時は 'utf8'" 2 .IX Item "$icode: 文字コード指定.省略可.省略時は 'utf8'" .ie n .IP "$encode: バイナリ符号化方式.省略可." 2 .el .IP "\f(CW$encode:\fR バイナリ符号化方式.省略可." 2 .IX Item "$encode: バイナリ符号化方式.省略可." .RE .RS 4 .PD .Sp インスタンスに文字列をセットします. 文字コード指定を省略すると UTF\-8 と見なされます. .Sp 利用可能な文字コード: .Sp .Vb 10 \& 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 .Ve .Sp ( も参照.) .Sp 文字コードを自動判別する場合は,'auto' を指定しなくてはいけません. \&'auto' 時の文字コード自動判別は,\fBgetcode()\fR メソッドにより 行われます. .Sp バイナリ符号化方式には,'base64' のみ指定可能です. base64 を指定した場合は,base64 デコードされてから Unicode::Japanese クラスの文字列となります. .Sp 渡された文字列を変更せずそのまま格納して欲しい場合には,文字コードとして \&'binary' を指定します. .Sp sjis\-imode,sjis\-doti,の場合,文字列中の &#dddd; は 絵文字に変換されます. .Sp 文字コードは領域が重なっている場合があるため, 自動判別は確実ではありません. .Sp sjis, utf8 の両方に解釈できる文字列の場合は,sjis, sjis\-au,sjis\-doti の両方に解釈できる文字列の場合は,sjis\-au, を返します. .RE .ie n .IP "$str = $s\->get" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->get" 4 .IX Item "$str = $s->get" .RS 4 .PD 0 .ie n .IP "$str: 文字列(UTF\-8)" 2 .el .IP "\f(CW$str:\fR 文字列(UTF\-8)" 2 .IX Item "$str: 文字列(UTF-8)" .RE .RS 4 .PD .Sp 文字列を UTF\-8 コードで取り出します. .Sp 現在は `バイト' 列 を返しますが, 将来的に変更される可能性もあります. .Sp バイト列が必要なら \fButf8()\fR メソッドを, 文字列が必要なら \fBgetu()\fR メソッドを使うことをオススメします. .RE .ie n .IP "$str = $s\->getu" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->getu" 4 .IX Item "$str = $s->getu" .RS 4 .PD 0 .ie n .IP "$str: 文字列(UTF\-8)" 2 .el .IP "\f(CW$str:\fR 文字列(UTF\-8)" 2 .IX Item "$str: 文字列(UTF-8)" .RE .RS 4 .PD .Sp 文字列を UTF\-8 コードで取り出します. .Sp Perl\-5.8.0 以降においては, utf\-8 フラグのついた utf\-8 文字列として 返します. .RE .ie n .IP "$code = $s\->getcode($str)" 4 .el .IP "\f(CW$code\fR = \f(CW$s\fR\->getcode($str)" 4 .IX Item "$code = $s->getcode($str)" .RS 4 .PD 0 .ie n .IP "$str: 文字列" 2 .el .IP "\f(CW$str:\fR 文字列" 2 .IX Item "$str: 文字列" .ie n .IP "$code: 文字コードを表す文字列" 2 .el .IP "\f(CW$code:\fR 文字コードを表す文字列" 2 .IX Item "$code: 文字コードを表す文字列" .RE .RS 4 .PD .Sp 渡された文字列(\fR\f(CI$str\fR\fI\fR)の文字コードを自動判別します. .Sp この関数では, 例外的に, インスタンスに保持されている 文字列のコードを判別するのではないことに注意してください. .Sp 文字コード自動判別時は,以下のアルゴリズムにより判定が行われます. .Sp (PurePerl時) .IP 1. 4 UTF\-32 の BOM があれば,utf32 と判定します. .IP 2. 4 UTF\-16 の BOM があれば,utf16 と判定します. .IP 3. 4 UTF\-32BE として正しい形式なら,utf32\-be と判定します. .IP 4. 4 UTF\-32LE として正しい形式なら,utf32\-le と判定します. .IP 5. 4 ESC 文字 または 8 ビット目の立っている文字が含まれていなければ,ascii と判定しま す。ESC を除いた ASCII 制御文字 (0x00\-0x1F 及び 0x7F) は ascii の範囲内と見做しま す。 .IP 6. 4 JISエスケープシーケンスが含まれていれば,jis と判定します. .IP 7. 4 J\-PHONE の絵文字が含まれていれば,sjis\-jsky と判別します. .IP 8. 4 EUC-JP コードとして正しい形式なら,euc と判定します. .IP 9. 4 SJIS コードとして正しい形式なら,sjis と判定します. .IP 10. 4 SJIS コードと au の絵文字として正しい形式なら,sjis\-au と判定します. .IP 11. 4 SJIS と i\-mode の絵文字として正しい形式なら,sjis\-imode と判別します. .IP 12. 4 SJIS と dot-i の絵文字として正しい形式なら,sjis\-doti と判別します. .IP 13. 4 UTF\-8 として正しい形式なら,utf8 と判定します. .IP 14. 4 いずれにも当てはまらない場合,unknown と判定します. .RE .RS 4 .Sp (XS時) .IP 1. 4 UTF\-32 の BOM があれば,utf32 と判定します. .IP 2. 4 UTF\-16 の BOM があれば,utf16 と判定します. .IP 3. 4 以下のコードについて, 正しい文字コードであることを状態遷移を用いて調べます. .Sp ascii / euc / sjis / jis / utf8 / utf32\-be / utf32\-le / sjis-jsky / sjis-imode / sjis-au / sjis-doti .IP 4. 4 最後まで正しかったものの中から, 以下の優先順で1つをえらんで, それと判定します. .Sp utf32\-be / utf32\-le / ascii / jis / euc / sjis / sjis-jsky / sjis-imode / sjis-au / sjis-doti / utf8 .IP 5. 4 いずれにも当てはまらない場合,unknown と判定します. .RE .RS 4 .Sp 以上のアルゴリズムのため,以下の点に注意してください. .IP \(bu 2 UTF\-8 文字列でも,SJISコードと見なされる可能性があります. .IP \(bu 2 UCS2 の自動判別はできません. .IP \(bu 2 UTF\-16 は BOM がある場合のみ自動認識します. .IP \(bu 2 携帯絵文字は,バイナリで直接絵文字がある場合のみ認識できます. &#dddd; 形式で記述されている場合は,携帯絵文字の自動判別は行われません. .RE .RS 4 .Sp XSとPurePerlでは, 判別のアルゴリズムに違いがあるため, 異なる結果になる可能性があります. 特に, エスケープ文字を含んでいるsjisの場合, PurePerlではsjisと認識しますが XSでは認識しません. これはsjis\-jskyと区別できなくなるためです. また, この 作用による誤認識を防ぐため, euc\-jpにおいても, 同様にエスケープ文字を受け付けなく なっています. .RE .ie n .IP "$code = $s\->getcodelist($str)" 4 .el .IP "\f(CW$code\fR = \f(CW$s\fR\->getcodelist($str)" 4 .IX Item "$code = $s->getcodelist($str)" .RS 4 .PD 0 .ie n .IP "$str: 文字列" 2 .el .IP "\f(CW$str:\fR 文字列" 2 .IX Item "$str: 文字列" .ie n .IP "$code: 文字コードを表す文字列" 2 .el .IP "\f(CW$code:\fR 文字コードを表す文字列" 2 .IX Item "$code: 文字コードを表す文字列" .RE .RS 4 .PD .Sp 渡された文字列(\fR\f(CI$str\fR\fI\fR)の文字コードを自動判別します. .Sp getcode とは違い, すべての受理可能な文字コードの 一覧を返します. .RE .ie n .IP "$str = $s\->conv($ocode, $encode)" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->conv($ocode, \f(CW$encode\fR)" 4 .IX Item "$str = $s->conv($ocode, $encode)" .RS 4 .PD 0 .ie n .IP "$ocode: 出力コード (以下から指定)" 2 .el .IP "\f(CW$ocode:\fR 出力コード (以下から指定)" 2 .IX Item "$ocode: 出力コード (以下から指定)" .PD .Vb 10 \& 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 .Ve .Sp ( も参照.) .Sp 携帯向け文字コードのうち,末尾に数字がついているものは,数字が大きいほど 大きな絵文字セット(最新機種の絵文字セット)を表しています. 数字なしのものは,もっとも数字が大きい文字コードと同一です. .ie n .IP "$encode: バイナリ符号化方式.省略可." 2 .el .IP "\f(CW$encode:\fR バイナリ符号化方式.省略可." 2 .IX Item "$encode: バイナリ符号化方式.省略可." .PD 0 .ie n .IP "$str: 文字列" 2 .el .IP "\f(CW$str:\fR 文字列" 2 .IX Item "$str: 文字列" .RE .RS 4 .PD .Sp 文字列を指定した文字コードに変換してから取り出します. .Sp 文字エンコードには,'base64' のみ指定可能です. base64 を指定した場合は,base64 エンコードされた 文字列が返されます. .Sp perl\-5.8.0 以降において, 出力は utf\-8 フラグを持たないバイト列になります. .RE .ie n .IP $s\->tag2bin 4 .el .IP \f(CW$s\fR\->tag2bin 4 .IX Item "$s->tag2bin" 文字列中に含まれる &#dddd; 形式の文字列を,それが表す文字自体に置き換えます. .ie n .IP $s\->z2h 4 .el .IP \f(CW$s\fR\->z2h 4 .IX Item "$s->z2h" 全角を半角に変換します. .ie n .IP $s\->h2z 4 .el .IP \f(CW$s\fR\->h2z 4 .IX Item "$s->h2z" 半角を全角に変換します. .ie n .IP $s\->hira2kata 4 .el .IP \f(CW$s\fR\->hira2kata 4 .IX Item "$s->hira2kata" ひらがなをカタカナに変換します. .ie n .IP $s\->kata2hira 4 .el .IP \f(CW$s\fR\->kata2hira 4 .IX Item "$s->kata2hira" カタカナをひらがなに変換します. .ie n .IP "$str = $s\->jis" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->jis" 4 .IX Item "$str = $s->jis" \&\f(CW$str:\fR JIS エンコーディング形式のバイト列 .Sp 文字列を JIS(ISO\-2022\-JP) コードで取り出します. .ie n .IP "$str = $s\->euc" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->euc" 4 .IX Item "$str = $s->euc" \&\f(CW$str:\fR euc-jp エンコーディング形式のバイト列 .Sp 文字列を EUC-JP コードで取り出します. .ie n .IP "$str = $s\->utf8" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->utf8" 4 .IX Item "$str = $s->utf8" \&\f(CW$str:\fR utf\-8 エンコーディング形式のバイト列 .Sp 文字列を UTF\-8 コードで取り出します. .Sp perl\-5.8.0 以降においても, バイト列を返します. .ie n .IP "$str = $s\->ucs2" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->ucs2" 4 .IX Item "$str = $s->ucs2" \&\f(CW$str:\fR ucs2 エンコーディング形式のバイト列 .Sp 文字列を UCS2 コードで取り出します. .ie n .IP "$str = $s\->ucs4" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->ucs4" 4 .IX Item "$str = $s->ucs4" \&\f(CW$str:\fR ucs4 エンコーディング形式のバイト列 .Sp 文字列を UCS4 コードで取り出します. .ie n .IP "$str = $s\->utf16" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->utf16" 4 .IX Item "$str = $s->utf16" \&\f(CW$str:\fR ucs\-16 エンコーディング形式のバイト列 .Sp 文字列を UTF\-16 コードで取り出します. BOMは付きません. ビックエンディアン形式で返されます. .ie n .IP "$str = $s\->sjis" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->sjis" 4 .IX Item "$str = $s->sjis" \&\f(CW$str:\fR sjis エンコーディング形式のバイト列 .Sp 文字列を SJIS(MS\-CP932) コードで取り出します. .ie n .IP "$str = $s\->sjis_imode" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->sjis_imode" 4 .IX Item "$str = $s->sjis_imode" \&\f(CW$str:\fR sjis/imode絵文字 エンコーディング形式のバイト列 .Sp 文字列を i\-mode 端末向けの SJIS コードで取り出します. 最新のimode絵文字の別名です. .ie n .IP "$str = $s\->sjis_imode1" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->sjis_imode1" 4 .IX Item "$str = $s->sjis_imode1" \&\f(CW$str:\fR sjis/imode 絵文字 エンコーディング形式のバイト列 .Sp 文字列を i\-mode 端末向けの SJIS コードで取り出します. 基本絵文字だけから成ります. .ie n .IP "$str = $s\->sjis_imode2" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->sjis_imode2" 4 .IX Item "$str = $s->sjis_imode2" \&\f(CW$str:\fR sjis/imode 絵文字 エンコーディング形式のバイト列 .Sp 文字列を i\-mode 端末向けの SJIS コードで取り出します. 基本絵文字, 拡張絵文字を含みます. .ie n .IP "$str = $s\->sjis_doti" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->sjis_doti" 4 .IX Item "$str = $s->sjis_doti" \&\f(CW$str:\fR sjis/dot\-i 絵文字 エンコーディング形式のバイト列 .Sp 文字列を dot-i 端末向けの SJIS コードで取り出します. .ie n .IP "$str = $s\->sjis_jsky" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->sjis_jsky" 4 .IX Item "$str = $s->sjis_jsky" \&\f(CW$str:\fR sjis/j\-sky 絵文字 エンコーディング形式のバイト列 .Sp 文字列を j\-sky 端末向けの SJIS コードで取り出します. 最新のj\-sky絵文字(VERSION 0.15 では, jsky2)の別名です. .ie n .IP "$str = $s\->sjis_jsky1" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->sjis_jsky1" 4 .IX Item "$str = $s->sjis_jsky1" \&\f(CW$str:\fR sjis/j\-sky 絵文字 エンコーディング形式のバイト列 .Sp 文字列を j\-sky 端末向けの SJIS コードで取り出します. Page 1~3 のみの絵文字を含みます. .ie n .IP "$str = $s\->sjis_jsky" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->sjis_jsky" 4 .IX Item "$str = $s->sjis_jsky" \&\f(CW$str:\fR sjis/j\-sky 絵文字 エンコーディング形式のバイト列 .Sp 文字列を j\-sky 端末向けの SJIS コードで取り出します. Page 1~6 の絵文字を含みます. .ie n .IP "$str = $s\->sjis_icon_au" 4 .el .IP "\f(CW$str\fR = \f(CW$s\fR\->sjis_icon_au" 4 .IX Item "$str = $s->sjis_icon_au" \&\f(CW$str:\fR sjis/AU iconタグ エンコーディング形式のバイト列 .Sp 文字列を AU 端末向けの SJIS コードで取り出します. .ie n .IP "$str_arrayref = $s\->strcut($len)" 4 .el .IP "\f(CW$str_arrayref\fR = \f(CW$s\fR\->strcut($len)" 4 .IX Item "$str_arrayref = $s->strcut($len)" .RS 4 .PD 0 .ie n .IP "$len: 分割する文字数(全角相当)" 2 .el .IP "\f(CW$len:\fR 分割する文字数(全角相当)" 2 .IX Item "$len: 分割する文字数(全角相当)" .ie n .IP "$str_arrayref: 文字列" 2 .el .IP "\f(CW$str_arrayref:\fR 文字列" 2 .IX Item "$str_arrayref: 文字列" .RE .RS 4 .PD .Sp \&\fR\f(CI$len\fR\fI\fRで指定された文字数(全角)以下の文字列の配列に分割します. .Sp 配列の各要素は, utf\-8 フラグを持ったutf\-8文字列です. .RE .ie n .IP "$len = $s\->strlen" 4 .el .IP "\f(CW$len\fR = \f(CW$s\fR\->strlen" 4 .IX Item "$len = $s->strlen" \&\f(CW$len:\fR 文字列の表示幅 .Sp UTF\-8 文字に対して \fBlength()\fR を使うと全角文字は1文字あたり長さ 3 になってしまいますが, このメソッドを使用すると,従来の SJIS のように,全角文字は1文字あたり長さ 2 を返します. .ie n .IP $s\->join_csv(@values); 4 .el .IP \f(CW$s\fR\->join_csv(@values); 4 .IX Item "$s->join_csv(@values);" \&\f(CW@values:\fR データ配列 .Sp 配列を CSV 文字列に変換し,インスタンスに格納します. 文字列の最後には改行("\en")が追加されます. .ie n .IP "@values = $s\->split_csv;" 4 .el .IP "\f(CW@values\fR = \f(CW$s\fR\->split_csv;" 4 .IX Item "@values = $s->split_csv;" \&\f(CW@values:\fR データ配列 .Sp インスタンスに格納されている文字列を CSV と見なし,配列に分割します. 文字列の最後にある改行("\en")は取り除かれてから分割されます. .Sp 入力が binary でなければ utf\-8 文字列を返します. binary だったときはバイト列を返します. .SH サポートされているエンコーディング .IX Header "サポートされているエンコーディング" .Vb 10 \& +\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+\-\-\-\-+\-\-\-\-\-+\-\-\-\-\-\-\-+ \& |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. .Ve .SS 自動認識優先順位 .IX Subsection "自動認識優先順位" .Vb 10 \& 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 .Ve .SH "DESCRIPTION OF UNICODE MAPPING" .IX Header "DESCRIPTION OF UNICODE MAPPING" Unicode とのマッピングは以下のように行われます. .IP Shift_JIS 2 .IX Item "Shift_JIS" MS\-CP932 として Unicode へマッピングを行います. マッピングテーブルは以下のURLのものを使用しています. .Sp .Sp Unicode から SJIS へマッピングする場合に,表現できない文字があると, その文字は &#dddd; 形式に変換します. ただし,携帯絵文字は「?」に変換されます. .Sp また,携帯向けの SJIS へ変換するときは,全ての表現できない文字は「?」に変換されます. .IP EUC\-JP/ISO\-2022\-JP 2 .IX Item "EUC-JP/ISO-2022-JP" 一度SJISコードに変換してから,Unicode へマッピングします. このとき,SJIS で表現できない文字が含まれていた場合, その文字は正しくマッピングできません. .IP "DoCoMo i\-mode" 2 .IX Item "DoCoMo i-mode" F800 \- F9FF の領域のうち絵文字が存在する部分を,U+0FF800 \- U+0FF9FF の領域にマッピングします. .IP "ASTEL dot-i" 2 .IX Item "ASTEL dot-i" F000 \- F4FF の領域のうち絵文字が存在する部分を,U+0FF000 \- U+0FF4FF の領域にマッピングします. .IP "J\-PHONE J\-SKY" 2 .IX Item "J-PHONE J-SKY" J\-SKY の絵文字は,エスケープシーケンス "\ee\e$" の後に,絵文字1バイト目, 1つ以上の絵文字2バイト目,"\ex0f",と続きます. 1バイト目が同じ絵文字が続く場合は,2バイト目のみを連続して書くことで 圧縮することができます. .Sp この1バイト目と2バイト目のペアを1文字と見なして,4500 \- 47FF の領域を, U+0FFB00 \- U+0FFDFF の領域にマッピングします. .Sp Unicode::Japanese では,Unicode から J\-SKY 絵文字にマッピングするとき, 1バイト目が同一である絵文字が連続している場合は,圧縮処理を自動的に行います. .IP AU 2 .IX Item "AU" 絵文字が存在する部分を,U+0FF500 \- U+0FF6FF の領域にマッピングします. .SH "PurePerl mode" .IX Header "PurePerl mode" .Vb 1 \& use Unicode::Japanese qw(PurePerl); .Ve .PP use 時の引数に \f(CW\*(AqPurePerl\*(Aq\fR を与えることで, XSを使わないことを明示的に宣言できます. .SH バグ .IX Header "バグ" バグや要望は \f(CW\*(C`bug\-unicode\-japanese at rt.cpan.org\*(C'\fR 宛に 報告してください. 若しくは . にある web インターフェースからでもかまいません. そこから私に通知され, そして私が変更を行うことで報告頂いたバグの進捗は 自動的にあなたに伝わります. .IP \(bu 2 EUC\-JP,JIS コードは,SJIS に変換されてから UTF\-8 へ変換されるため, SJIS で表現できない文字列は正しく変換することはできません. .IP \(bu 2 XSを使用している場合,EUC\-JP,SJIS(絵文字含む)コードの文字列中に \&\ee が含まれると,EUC\-JP,SJIS コードの判定に失敗し, 正しく自動判別や変換を行うことが出来ません. .IP \(bu 2 Japanese.pm はファイル後半にバイナリを含むため,FTP の ASCII モードで 転送するとファイルが壊れます. .SH サポート .IX Header "サポート" このモジュールのドキュメントは perldoc コマンドで見ることが出来ます. .PP .Vb 1 \& perldoc Unicode::Japanese .Ve .PP また, 以下の場所でも見ることが出来ます: .IP \(bu 4 AnnoCPAN: Annotated CPAN documentation .Sp .IP \(bu 4 CPAN Ratings .Sp .IP \(bu 4 RT: CPAN's request tracker .Sp .IP \(bu 4 Search CPAN .Sp .SH CREDITS .IX Header "CREDITS" Thanks very much to: .PP NAKAYAMA Nao .PP SUGIURA Tatsuki & Debian JP Project .SH 著作権及びライセンス .IX Header "著作権及びライセンス" Copyright 2001\-2008 SANO Taku (SAWATARI Mikage) and YAMASHINA Hio, all rights reserved. .PP このプログラムはフリーソフトウェアです。あなたは Perl と同じ ライセンスの 元で再配布及び変更を行うことが出来ます.