UTF-8フラグとはPerl内部文字コードで、Perlの中で「これは文字列ですよ〜」というフラグです。
Perlは内部で取り扱うデータはすべてバイナリデータとして取り扱ってます(たぶん
lang
1# sample_1
2use utf8;
3print length("あいうえお");
lang
1# sample_2
2print length("あいうえお");
次のような2つの場合、sample_1の方は「use utf8;」とソース内の文字列すべてにUTF8フラグを付ける宣言をしています。
この場合、lengthで出力される数字は文字数の5が出力されます。
sample_2の方は、UTF8フラグがなくバイナリとして数えられ「15」と表示されます。(1文字3バイト構成)
またバイナリとして文字列を操作する場合、特定の文字と文字が続くと別の意味の文字になる事があり、
文字化けの原因や、正規表現などでの誤動作を起こす事があるようです。
なので、Perlで文字列を操作する時はUTF-8フラグを付けるようにした方がいいです。
UTF-8フラグが付いている文字列かどうかのチェックは、Encodeパッケージのis_utf8で調べる事ができます。
lang
1use Encode;
2if (Encode::is_utf8("てすとてすと")) {
3 print "フラグがついている!";
4}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/01 04:09