utf8 - ソースコード内の UTF-8 の有効/無効を設定する Perl プラグマ
utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code

目次 TABLE OF CONTENTS


名前 NAME

utf8 - ソースコード内の UTF-8 の有効/無効を設定する Perl プラグマ utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code


書式 SYNOPSIS

    use utf8;
    no utf8;


説明 DESCRIPTION

use utf8 プラグマは, Perl パーサに 現在のレキシカルス コープ(lexical scope, 訳つけると語句解析範囲?)のプログラムテキストに おいて UTF-8 を許すことを伝えます. (EBCDIC ベースのプラットホームで は UTF-EBCDIC を使います.) no utf8 プラグマは, Perl に現 在のレキシカルスコープの範囲においてバイト単位にソーステキストを扱うよ うに戻すことを伝えます. The use utf8 pragma tells the Perl parser to allow UTF-8 in the program text in the current lexical scope (allow UTF-EBCDIC on EBCDIC based platforms). The no utf8 pragma tells Perl to switch back to treating the source text as literal bytes in the current lexical scope.

このプラグマは元々互換用です. 5.6 より前のバージョンの Perl では, ソースコードに任意のバイト文字列を許してきました. しかしこれに反して将 来的に, 私たちはソーステキストにおいて UTF-8 エンコーディングを標準と したいと考えてきました. UTF-8 がソーステキストの標準の形式となるまで, このプラグマはソースファイルで UTF-8 を区別するために使うべきでした. UTF-8 がひょじゅんのソース形式となった時, このプラグマは事実上なにも行 わなくなります. 利便性のために UTF-X の単語に続く何かは ASCII 及び ISO Latin ベースのプラットホームでは UTF-8 を, EBCDIC ベースのプ ラットホームでは, UTF-EBCDIC を参照します. This pragma is primarily a compatibility device. Perl versions earlier than 5.6 allowed arbitrary bytes in source code, whereas in future we would like to standardize on the UTF-8 encoding for source text. Until UTF-8 becomes the default format for source text, this pragma should be used to recognize UTF-8 in the source. When UTF-8 becomes the standard source format, this pragma will effectively become a no-op. For convenience in what follows the term UTF-X is used to refer to UTF-8 on ASCII and ISO Latin based platforms and UTF-EBCDIC on EBCDIC based platforms.

utf8 プラグマの有効化は次の効果を持ちます: Enabling the utf8 pragma has the following effect:

もしあなたのスクリプト中に8番目のビットを持つバイトがあったなら(例 えば文字列リテラルに埋め込まれた Latin-1)use utf8 はおそ らく UTF-8 の形式でないため不幸なことになるでしょう. もしそのようなバ イトを持ち utf8 を使いたいのなら, ブロックの終わり(もしくはトップレベ ルで指定することでファイルの終わり)まで no utf8; をつかっ て utf8 を無効化することができます. Note that if you have bytes with the eighth bit on in your script (for example embedded Latin-1 in your string literals), use utf8 will be unhappy since the bytes are most probably not well-formed UTF-8. If you want to have such bytes and use utf8, you can disable utf8 until the end the block (or file, if at top level) by no utf8;.

ユーティリティ関数 Utility functions

次の関数が perl code によって utf8:: パッケージに定義されています. The following functions are defined in the utf8:: package by the perl core.

* $num_octets = utf8::upgrade($string);

文字列の(適切な)内部表現を Perl の内部 UTF-X 形式に変換します. UTF-X として文字列を表現するのに必要なオクテット数を返しま す. もし \w もしくは lc() が 0x80-0xFF の 範囲の文字を含んでいる文字列に対して予期するように働くならば, UTF-8 フ ラグが設定されていることを確かめるために使うこともできます. これは, 今 までの遺産のバイトエンコーディングを Unicode に変換するために使うべき ではないことに注意してください. そのためには Encode を使うべきです. encoding プラグマによって影響を受けます. Converts (in-place) internal representation of string to Perl's internal UTF-X form. Returns the number of octets necessary to represent the string as UTF-X. Can be used to make sure that the UTF-8 flag is on, so that \w or lc() work as expected on strings containing characters in the range 0x80-0xFF. Note that this should not be used to convert a legacy byte encoding to Unicode: use Encode for that. Affected by the encoding pragma.

* utf8::downgrade($string[, FAIL_OK])

文字列の(適切な)内部表現をエンコードされていないバイト列に変換します. 成功時には true を返します. 失敗時には die されます. もし FAIL_OK の 値が true であれば, false を返します. (原文: On failure dies or, if the value of FAIL_OK is true, returns false.) UTF-8 フラグが設定されて いないことを確認するためにも使えます. たとえば, substr() もしくは length() 関数 は, たいていバイト単位のアルゴリズムの方が高速なことを確認したい時に使 えます. これは Unicode を以前のようなバイトエンコーディングに戻すため に使うべきではないことに注意してください. そのためには Encode を使うべ きです. encoding プラグマによる影響を受けません. Converts (in-place) internal representation of string to be un-encoded bytes. Returns true on success. On failure dies or, if the value of FAIL_OK is true, returns false. Can be used to make sure that the UTF-8 flag is off, e.g. when you want to make sure that the substr() or length() function works with the usually faster byte algorithm. Note that this should not be used to convert Unicode back to a legacy byte encoding: use Encode for that. Not affected by the encoding pragma.

* utf8::encode($string)

(適切な) $string を論理文字から Perl の UTF-X 表現で のオクテット列に変換します. Encoding::encode_utf8() と同じです. しかし これはこれまで使っていたバイトエンコーディングから Unicode への変換に 使うべきではないことに注意してください. そのためには Encoding を使うべ きです. Converts (in-place) $string from logical characters to octet sequence representing it in Perl's UTF-X encoding. Same as Encode::encode_utf8(). Note that this should not be used to convert a legacy byte encoding to Unicode: use Encode for that.

* $flag = utf8::decode($string)

Attempts to convert $string in-place from Perl's UTF-X encoding into logical characters. Same as Encode::decode_utf8(). Note that this should not be used to convert Unicode back to a legacy byte encoding: use Encode for that.

* $flag = utf8::valid(STRING)

[INTERNAL] Test whether STRING is in a consistent state. Will return true if string is held as bytes, or is well-formed UTF-8 and has the UTF-8 flag on. Main reason for this routine is to allow Perl's testsuite to check that operations have left strings in a consistent state.

utf8::encode is like utf8::upgrade, but the UTF8 flag is cleared. See the perlunicode manpage for more on the UTF8 flag and the C API functions sv_utf8_upgrade, sv_utf8_downgrade, sv_utf8_encode, and sv_utf8_decode, which are wrapped by the Perl functions utf8::upgrade, utf8::downgrade, utf8::encode and utf8::decode. Note that in the Perl 5.8.0 implementation the functions utf8::valid, utf8::encode, utf8::decode, utf8::upgrade, and utf8::downgrade are always available, without a require utf8 statement-- this may change in future releases.


バグ BUGS

One can have Unicode in identifier names, but not in package/class or subroutine names. While some limited functionality towards this does exist as of Perl 5.8.0, that is more accidental than designed; use of Unicode for the said purposes is unsupported.

One reason of this unfinishedness is its (currently) inherent unportability: since both package names and subroutine names may need to be mapped to file and directory names, the Unicode capability of the filesystem becomes important-- and there unfortunately aren't portable answers.


関連項目 SEE ALSO

the perlunicode manpage, the bytes manpage

utf8 - ソースコード内の UTF-8 の有効/無効を設定する Perl プラグマ
utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code

索引 INDEX

utf8 - ソースコード内の UTF-8 の有効/無効を設定する Perl プラグマ
utf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code