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



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

基本的な Unicode サポート

編集

Perl 5.36以降では、以下の機能がデフォルトで有効になっています:

  • strict プラグマ
  • warnings プラグマ
  • Unicode文字サポート
  • UTF-8ソースコードサポート

utf8プラグマとエンコーディング制御

編集

utf8プラグマの使用

編集

modern Perlでは、ソースコード内でUnicodeを使用する場合、utf8プラグマを使用します:

use utf8;

このプラグマにより:

  • ソースコードがUTF-8として解釈されます
  • 文字列リテラルにutf8フラグが設定されます
  • 文字列操作が文字単位で行われます

文字列操作の例

編集

length関数は文字数を返します:

use v5.36;  # strict, warnings, utf8が自動的に有効
say length "あいうえお";  # 5を出力

出力時のエンコーディング制御

編集

出力時のエンコーディングは以下のいずれかの方法で制御できます:

  1. binmodeによる制御:
    use v5.36;
    binmode STDOUT, "encoding(utf-8)";
    say "あいうえお";
    
  2. Encodeモジュールの使用:
    use v5.36;
    use Encode qw(encode);
    say encode('utf-8', "あいうえお");
    

モダンなエンコーディング処理

編集

Perl 5.36以降では、Encodeモジュールを使用した文字エンコーディング変換が推奨されます:

use v5.36;
use Encode qw(decode encode);

# ファイルからShift_JISテキストを読み込み
my $text = decode('Shift_JIS', $shift_jis_text);

# UTF-8で出力
print encode('UTF-8', $text);

推奨プラクティス

編集
  • use v5.36 以降を使用して、モダンな機能を自動的に有効化
  • 常にUTF-8をデフォルトエンコーディングとして使用
  • 入出力時は明示的にエンコーディングを指定
  • レガシーエンコーディングを扱う場合はEncodeモジュールを使用