utf-8でフォーム処理のコードを書いてます。
euc-jpで動作していた全角文字の正規表現がutf-8で動作しません。
単純な「$str =~ /あ/」のような書き方ではなく、別な指定方法が必要なのでしょうか?
・perl5.8 文字コードutf-8 標準入力側文字コードutf-8
use utf8;
my(%POST,$buffer,$key,$value,@data_s);
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
if ($ENV{'CONTENT_TYPE'} =~ /application\/x-www-form-urlencoded/i) {
binmode STDIN;
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
@data_s = split(/&/,$buffer);
foreach $buffer (@data_s) {
($key,$value) = split(/=/,$buffer);
$value =~ tr/+/ /;
$value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C",hex($1))/eg;
if ( exists ($POST{$key}) ) { $POST{$key} .= '<>' . $value; }
else { $POST{$key} = $value; }
}
}
}
binmode STDOUT,":encoding(utf8)";
print "Content-type: text/html; charset=utf-8\n\n";
print "<br>\n";
foreach $key (keys %POST) {
if ($POST{$key} =~ /[0-9]/) { print "全角数字にマッチ<br>\n"; }######
print "$key = $POST{$key}<br>\n";
}
exit;
No.1ベストアンサー
- 回答日時:
フォームから受け取った文字列が utf8 のバイト列だとすると Perl が内部で扱えるようにするためにデコードする必要があります。
ということでプログラムの最初の方で
use Encode;
をやっておいて、$value を $POST{$key} に代入する前に
$value2 = decode('utf8', $value);
のようにしましょう(で、$POST{$key} = $value2; のように代入する)。
___noboru___様、簡潔&的確なご返答ありがとうございます。
教えていただいた通りに処理してみたところ、解決しました!
感謝いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perl でエラー:Wide character...
-
UTF-8のPerlから、UTF-8、EUC、...
-
【LaTeX】pBibTeXでのエラーの...
-
$obj->decode($bytes)って何?
-
CSVファイルの中で、「 , 」カ...
-
エクセルにMicrosoft Barcode C...
-
CSVの定義
-
word差し込み印刷 半角カタカ...
-
エクセルでの”々”の扱い
-
VBA EXCEL あるセルの中の一...
-
スペースで区切られた氏名から...
-
PHP カンマをエスケープしたい...
-
エクセルで数値を全角文字(カ...
-
CString から LPCTSTRの型に変換
-
WORDで改ページすると時々グレ...
-
EXCELからCSVにすると余計なカ...
-
住宅にカナを入力する際に丁目...
-
COBOL・全角判定
-
英数字のみ全角から半角に変換
-
char型全角数字から、int型半角...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl でエラー:Wide character...
-
【LaTeX】pBibTeXでのエラーの...
-
MFCのコントロールにUTF-8の文...
-
CGIでメール送信で件名文字化け
-
Jcodeによるカタカナ→ひらがな変換
-
WindowsでUTF-8のPerlスクリプ...
-
Java+MySQLで特殊文字(丸数字(...
-
【文字コード】外見上は全く同...
-
デバッグ情報が文字化けする
-
Cannot decode string with wid...
-
HTML::Templateでutf-8のテンプ...
-
Jcode.pmでconvertできない
-
perl について
-
カタカナ一覧表が知りたい
-
JcodeモジュールとEncodeモジュ...
-
sedやperlでの2バイト文字を含...
-
オブジェクト? perlをオーバー...
-
UTF-8のPerlから、UTF-8、EUC、...
-
pythonの文字コードとファイル操作
-
WWW::Mechanizeの文字コードに...
おすすめ情報