日本語の処理
テキストエリアに日本語を入力し、Perlで処理を行う場合、内部処理を EUCコードで行えば問題ありませんが、他のコードを使用している場合は、一度EUCコードに変換してあげれる必要があります。コード変換は、nkfコマンドや jcode.plを使用します。下表はjcode.plで使用できる関数です。
jcode.plの関数
関数 機能 &jcode'getcode(*line) 漢字コードの判別 &jcode'convert(*line, $ocode [, $icode]) コード変換
たとえば、先程の簡易Perlライブラリを例に考えてみます。GETの場合は適当な漢字コードに変換すればよいのですが、Perlで日本語処理を行う場合、EUC以外は難しいようです。従って、内部処理をEUCにして、書き込む場合もやはりEUCにするか、他の適当なコードへ変換するかを考えて下さい。下記に簡易 Perl ライブラリを使った例を示しますが、他にも方法はあると思います。
require 'jcode.pl'; sub read_input { local ($buffer, @pairs, $pair, $name, $value, %form); # Read in text $env{'request_method'} =~ tr/a-z/A-Z/; if ($env{'request_method'} eq "post") { read(stdin, $buffer, $env{'content_length'}); } else { $buffer = $env{'query_string'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value, 'euc'); $form{$name} = $value; } %form; }