質問: ”あいう”; #$aをURLエンコード $a =~ s/([^¥w ])/’%’ . unpack(’H2’, $1)/eg; $a =~ tr/ /+/; print ”Content-Type: text/html¥n¥n”; print $a; exit; ---プログラムここまで--- --> 結果 あいう と表示されます
回答: Encode - character encodings - search.cpan.org use encoding ’euc-jp’; use Encode qw(encode); $a = ”あいう”; $a = encode(’euc-jp’, $a); $a =~ s/([^¥w ])/’%’. unpack(’H2’, $1)/eg; 以下略 use encoding ’euc-jp’; use Jcode; $a = ”あいう”; $a = Jcode->new( $a )->euc; $a =~ s/([^¥w ])/’%’. unpack(’H2’, $1)/eg; 以下略 encoding - allows you to write your script in non-ascii or non-utf8 - search.cpan.org 理由: use encoding ’euc-jp’; を指定すると、実行時に$a = ”あいう”;でスカラー$aにUCSワイドキャラクタ が格納されます。 質問の意図は、おそらくEUC-JPでURLエンコードしたいという意味でしょうから $aの内容をマルチバイトのEUC-JPに変換しないといけません。 ワイドキャラクタからマルチバイトへの変換には、 Encodeか、それのOOPラッパーのJcodeを使います。 # UTF-8の場合もマルチバイトに変換しなければなりません。