File: //usr/local/share/man/man3/Unicode::Japanese::JA.3pm
.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
.\"
.\" 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
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. 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 3"
.TH Unicode::Japanese::JA 3 "2012-02-10" "perl v5.26.3" "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
\&\s-1XS\s0 使用/不使用を共にサポートしています.
\&\s-1XS\s0 版はパフォーマンスが必要な場合に,
No-XS 版は手軽に使用したい場合に使用して下さい
(Japanese.pm をコピーするだけで動作します).
.IP "\(bu" 2
全角半角変換,カタカナひらがな変換をサポートしています.
.IP "\(bu" 2
携帯電話 (DoCoMo i\-mode,KDDI \s-1AU,\s0 Softbank Mobile, \s-1ASTEL\s0 dot-i) の絵文字を
Unicode 私用領域にマッピングすることで,DB 等で安全に扱うことができます.
.IP "\(bu" 2
異なる携帯電話同士で,同じイメージの絵文字は相互変換することが可能です.
.IP "\(bu" 2
\&\s-1SJIS\s0 は, \s-1MS\-CP932\s0 とみなして 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 コンパイラ.
このモジュールは \s-1XS\s0 と 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
パラメータを指定すると,\*(L"set\*(R" メソッドに渡されます.
.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
インスタンスに文字列をセットします.
文字コード指定を省略すると \s-1UTF\-8\s0 と見なされます.
.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: 文字列(\s-1UTF\-8\s0)" 2
.el .IP "\f(CW$str:\fR 文字列(\s-1UTF\-8\s0)" 2
.IX Item "$str: 文字列(UTF-8)"
.RE
.RS 4
.PD
.Sp
文字列を \s-1UTF\-8\s0 コードで取り出します.
.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: 文字列(\s-1UTF\-8\s0)" 2
.el .IP "\f(CW$str:\fR 文字列(\s-1UTF\-8\s0)" 2
.IX Item "$str: 文字列(UTF-8)"
.RE
.RS 4
.PD
.Sp
文字列を \s-1UTF\-8\s0 コードで取り出します.
.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
渡された文字列(\fI\f(CI$str\fI\fR)の文字コードを自動判別します.
.Sp
この関数では, 例外的に, インスタンスに保持されている
文字列のコードを判別するのではないことに注意してください.
.Sp
文字コード自動判別時は,以下のアルゴリズムにより判定が行われます.
.Sp
(PurePerl時)
.IP "1." 4
\&\s-1UTF\-32\s0 の \s-1BOM\s0 があれば,utf32 と判定します.
.IP "2." 4
\&\s-1UTF\-16\s0 の \s-1BOM\s0 があれば,utf16 と判定します.
.IP "3." 4
\&\s-1UTF\-32BE\s0 として正しい形式なら,utf32\-be と判定します.
.IP "4." 4
\&\s-1UTF\-32LE\s0 として正しい形式なら,utf32\-le と判定します.
.IP "5." 4
\&\s-1ESC\s0 文字 または 8 ビット目の立っている文字が含まれていなければ,ascii と判定しま
す。ESC を除いた \s-1ASCII\s0 制御文字 (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
\&\s-1SJIS\s0 コードとして正しい形式なら,sjis と判定します.
.IP "10." 4
\&\s-1SJIS\s0 コードと au の絵文字として正しい形式なら,sjis\-au と判定します.
.IP "11." 4
\&\s-1SJIS\s0 と i\-mode の絵文字として正しい形式なら,sjis\-imode と判別します.
.IP "12." 4
\&\s-1SJIS\s0 と dot-i の絵文字として正しい形式なら,sjis\-doti と判別します.
.IP "13." 4
\&\s-1UTF\-8\s0 として正しい形式なら,utf8 と判定します.
.IP "14." 4
いずれにも当てはまらない場合,unknown と判定します.
.RE
.RS 4
.Sp
(XS時)
.IP "1." 4
\&\s-1UTF\-32\s0 の \s-1BOM\s0 があれば,utf32 と判定します.
.IP "2." 4
\&\s-1UTF\-16\s0 の \s-1BOM\s0 があれば,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
\&\s-1UTF\-8\s0 文字列でも,SJISコードと見なされる可能性があります.
.IP "\(bu" 2
\&\s-1UCS2\s0 の自動判別はできません.
.IP "\(bu" 2
\&\s-1UTF\-16\s0 は \s-1BOM\s0 がある場合のみ自動認識します.
.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
渡された文字列(\fI\f(CI$str\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 \s-1JIS\s0 エンコーディング形式のバイト列
.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
文字列を \s-1UTF\-8\s0 コードで取り出します.
.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
文字列を \s-1UCS2\s0 コードで取り出します.
.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
文字列を \s-1UCS4\s0 コードで取り出します.
.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
文字列を \s-1UTF\-16\s0 コードで取り出します.
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 端末向けの \s-1SJIS\s0 コードで取り出します.
最新の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 端末向けの \s-1SJIS\s0 コードで取り出します.
基本絵文字だけから成ります.
.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 端末向けの \s-1SJIS\s0 コードで取り出します.
基本絵文字, 拡張絵文字を含みます.
.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 端末向けの \s-1SJIS\s0 コードで取り出します.
.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 端末向けの \s-1SJIS\s0 コードで取り出します.
最新のj\-sky絵文字(\s-1VERSION 0.15\s0 では, 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 端末向けの \s-1SJIS\s0 コードで取り出します.
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 端末向けの \s-1SJIS\s0 コードで取り出します.
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
文字列を \s-1AU\s0 端末向けの \s-1SJIS\s0 コードで取り出します.
.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
\&\fI\f(CI$len\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
\&\s-1UTF\-8\s0 文字に対して \fBlength()\fR を使うと全角文字は1文字あたり長さ 3 になってしまいますが,
このメソッドを使用すると,従来の \s-1SJIS\s0 のように,全角文字は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
配列を \s-1CSV\s0 文字列に変換し,インスタンスに格納します.
文字列の最後には改行(\*(L"\en\*(R")が追加されます.
.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
インスタンスに格納されている文字列を \s-1CSV\s0 と見なし,配列に分割します.
文字列の最後にある改行(\*(L"\en\*(R")は取り除かれてから分割されます.
.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"
\&\s-1MS\-CP932\s0 として Unicode へマッピングを行います.
マッピングテーブルは以下のURLのものを使用しています.
.Sp
<ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT>
.Sp
Unicode から \s-1SJIS\s0 へマッピングする場合に,表現できない文字があると,
その文字は &#dddd; 形式に変換します.
ただし,携帯絵文字は「?」に変換されます.
.Sp
また,携帯向けの \s-1SJIS\s0 へ変換するときは,全ての表現できない文字は「?」に変換されます.
.IP "\s-1EUC\-JP/ISO\-2022\-JP\s0" 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 "\s-1ASTEL\s0 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 の絵文字は,エスケープシーケンス \*(L"\ee\e$\*(R" の後に,絵文字1バイト目,
1つ以上の絵文字2バイト目,\*(L"\ex0f\*(R",と続きます.
1バイト目が同じ絵文字が続く場合は,2バイト目のみを連続して書くことで
圧縮することができます.
.Sp
この1バイト目と2バイト目のペアを1文字と見なして,4500 \- 47FF の領域を,
U+0FFB00 \- U+0FFDFF の領域にマッピングします.
.Sp
Unicode::Japanese では,Unicode から J\-SKY 絵文字にマッピングするとき,
1バイト目が同一である絵文字が連続している場合は,圧縮処理を自動的に行います.
.IP "\s-1AU\s0" 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 宛に
報告してください. 若しくは
<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Unicode\-Japanese>.
にある web インターフェースからでもかまいません.
そこから私に通知され, そして私が変更を行うことで報告頂いたバグの進捗は
自動的にあなたに伝わります.
.IP "\(bu" 2
EUC\-JP,JIS コードは,SJIS に変換されてから \s-1UTF\-8\s0 へ変換されるため,
\&\s-1SJIS\s0 で表現できない文字列は正しく変換することはできません.
.IP "\(bu" 2
XSを使用している場合,EUC\-JP,SJIS(絵文字含む)コードの文字列中に
\&\ee が含まれると,EUC\-JP,SJIS コードの判定に失敗し,
正しく自動判別や変換を行うことが出来ません.
.IP "\(bu" 2
Japanese.pm はファイル後半にバイナリを含むため,FTP の \s-1ASCII\s0 モードで
転送するとファイルが壊れます.
.SH "サポート"
.IX Header "サポート"
このモジュールのドキュメントは perldoc コマンドで見ることが出来ます.
.PP
.Vb 1
\& perldoc Unicode::Japanese
.Ve
.PP
また, 以下の場所でも見ることが出来ます:
.IP "\(bu" 4
AnnoCPAN: Annotated \s-1CPAN\s0 documentation
.Sp
<http://annocpan.org/dist/Unicode\-Japanese>
.IP "\(bu" 4
\&\s-1CPAN\s0 Ratings
.Sp
<http://cpanratings.perl.org/d/Unicode\-Japanese>
.IP "\(bu" 4
\&\s-1RT: CPAN\s0's request tracker
.Sp
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Unicode\-Japanese>
.IP "\(bu" 4
Search \s-1CPAN\s0
.Sp
<http://search.cpan.org/dist/Unicode\-Japanese>
.SH "CREDITS"
.IX Header "CREDITS"
Thanks very much to:
.PP
\&\s-1NAKAYAMA\s0 Nao
.PP
\&\s-1SUGIURA\s0 Tatsuki & Debian \s-1JP\s0 Project
.SH "著作権及びライセンス"
.IX Header "著作権及びライセンス"
Copyright 2001\-2008
\&\s-1SANO\s0 Taku (\s-1SAWATARI\s0 Mikage) and \s-1YAMASHINA\s0 Hio,
all rights reserved.
.PP
このプログラムはフリーソフトウェアです。あなたは Perl と同じ
ライセンスの 元で再配布及び変更を行うことが出来ます.