perlでの日本語の取扱

Perlは文字列を内部エンコーディングで扱う.読み書きするところで,外部のエンコーディングによるバイト列から内部エンコーディング文字列に変えるのがわかりやすい.ということで,
openするときにとしてencodingを指定する.

open(FH, "<:encoding(UTF-8)", $file); open(FH, ">:encoding(euc-jp)", $file);
open(FH, ">>:encoding(shiftjis)", $file);

すでに開いてしまっているファイルハンドルのエンコーディングを後から変えるにはbinmodeが使える:

binmode(STDOUT, ":encoding(UTF-8)");

ファイルハンドルごとに指定するのが面倒な場合には,デフォルトを変えてしまうこともできる.
openプラグマを使う.

use open IN => ":encoding(shiftjis)", OUT => ":encoding(UTF-8)"
use open IO => ":encoding(euc-jp)"

これらは標準入出力には影響を与えない.影響させるためにはこの後で:stdを使う:

use open ":std"

別の話として,ソースコード中に日本語をUTF-8で書きたいときにはutf8プラグマを使う.

use utf8

perldoc の,
Encode,
Encode::JP,
unicodeチュートリアル,
unicode FAQ,
open関数,
openプラグマ,
openチュートリアル,
utf8プラグマ
あたりを参照.

昔と違っていろいろweb上に有用な記事がある.以下はかなり良い.
http://www.rwds.net/kuroita/program/Perl_unicode.html
ほかにも,「perl encode 日本語」とかでgoogleを引くといろいろ出てくる.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*