Perl/日本語処理
< Perl
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を出力
出力時のエンコーディング制御
編集出力時のエンコーディングは以下のいずれかの方法で制御できます:
- binmodeによる制御:
use v5.36; binmode STDOUT, "encoding(utf-8)"; say "あいうえお";
- 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モジュールを使用