Perl/日本語処理

出典: フリー教科書『ウィキブックス(Wikibooks)』

Perl > 日本語処理


この項目では、Perlにおける日本語(マルチバイト文字)処理について説明する。

[編集] utf8プラグマとutf8フラグ

utf8プラグマを使用すると、ソースコードがUTF-8であると仮定され、文字列にutf8フラグが立つようになる。また様々な関数や演算子はバイト単位ではなく文字単位で動作するようになる。

use utf8;

例えば、lengthは文字数を返すようになる。

use bytes;
print length "あいうえお"; # UTF-8では15
use utf8;
print length "あいうえお"; # 5

ファイルハンドルへの出力時にutf8フラグを落とすには、Perl5.8以降では2引数のbinmode()を用いる。

binmode STDOUT, ':utf8';

もしくはEncodeモジュールのencode_utf8()関数を用いる。

use Encode qw(encode_utf8);
print encode_utf8("あいうえお");

utf8フラグが付いたまま出力すると、warningsプラグマや-wスイッチが有効な場合、次のような警告が発せられる。

Wide character in print at -e line 1.

[編集] 文字エンコーディング

文字エンコーディングの操作には、Perl4ではjcode.pl、Perl5.8以前はJcode.pm、Perl5.8以降はEncode.pmを用いる。

Perl5.8以降でShift_JISをUTF-8に変換するには、Encodeのfrom_to関数を使って、

use Encode qw(from_to);
my $str = 'あいうえお';
from_to $str, 'Shift_JIS', 'UTF-8';

とする。

このページ「Perl/日本語処理」は、書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にノートへどうぞ。
ヘルプ