プログラムの文字コードにUTF-8を使用する

Perl を使ったプログラムを作成する場合に、文字コードとして UTF-8 を使用することができます。ここでは Perl のプログラムの文字コードを UTF-8 にする方法を解説します。

(Last modified: )

文字コードにUTF-8を使用する

文字コードとして UTF-8 を使用する場合は utf8 プラグマを使ってプログラムの冒頭で次のように記述します。

use utf8;

これで Perl のプログラムが UTF-8 を使って記述されていることを宣言することができます。テキストエディタなどでプログラムを記述した時に、文字コードを UTF-8 を指定して保存して下さい。

ただし Windows 環境の場合であれば、何かキーボードから文字を入力したり、画面に出力する時には Shift_JIS を使用するため合わせて次の設定が必要となります。

use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

※ cp932 は Microsoft が Shift_JIS を独自に拡張した文字コードです。 cp932 の代わりに shiftjis や Shift_JIS を指定してもいいですが cp932 の方がよりよさそうです。

これで標準入力からは Shift_JIS が UTF-8 に変換されて読み込まれ、標準出力と標準エラー出力には UTF-8 が Shift_JIS に変換されて出力されます。

これで UTF-8 を使って Perl のプログラムを記述する準備ができました。

サンプルコード

それでは簡単なサンプルを作成します。最初に use utf8; だけを指定してみます。

use strict;
use warnings;
use utf8;

print "Hello\n";
print "こんにちは。\n";
print "東京都\n";

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

プログラムの文字コードにUTF-8を使用する(1)

半角英数の文字列は正常に画面に表示されましたが、日本語の文字列は思ったようには表示されませんでした。ではプログラムを次のように変更します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

print "Hello\n";
print "こんにちは。\n";
print "東京都\n";

先ほどと同じように実行すると、次のように実行結果が表示されます。

プログラムの文字コードにUTF-8を使用する(2)

今度は日本語の文字列も問題なく画面に表示されました。 UTF-8 でプログラムを保存して、問題なく実行することができました。

-- --

Perl のプログラムの文字コードを UTF-8 にする方法を解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。