Perl > 文字コードとエンコーディング



この項目では、Perlにおける文字コードとエンコーディングについて説明します。

utf8プラグマとutf8フラグ

編集

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

use utf8;

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

utf8プラグマの使用例
use v5.20.0;

use utf8;
say length "あいうえお";
no utf8;
say length "あいうえお";
実行結果

ファイルハンドルへの出力時にutf8フラグを落とすには、binmode関数で、対応するストリームのエンコーディングを指定します。

use v5.20.0;

use utf8;
binmode STDOUT, "encoding(utf-8)";
say "あいうえお";

もしくはEncodeモジュールのencode()関数を用います。

use v5.20.0;

use Encode qw(encode);

say encode('utf-8', "あいうえお");

utf8フラグが付いたまま出力すると、warningsプラグマや-wスイッチが有効な場合(use v5.12 以降は strict が[1]、 use v5.36 は、warnings がディフォルトで有効です[2])、次のような警告が発せられます。

Wide character in say at -e line 3.
このページ「Perl/日本語処理」は、まだ書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にトークページへどうぞ。
  1. ^ 暗黙のstrict
  2. ^ use v5.36