#!/usr/local/bin/perl use strict; use utf8; #←これ!!! use CGI; use Encode; my $ORG_STR = 'テスト'; main(); sub main { my $str = $ORG_STR; $str =~ s/(\W)/'%' . unpack('H2', $1)/ego; print encode('utf8',"$ORG_STR -> "), $str,"\n"; print encode('utf8',"$ORG_STR -> "),CGI::escape($ORG_STR),"\n"; }
↑これを実行すると、↓こう
[endo@colinux tmp]$ ./foo.pl Wide character in print at ./foo.pl line 14. テスト -> テスト テスト -> %E3%83%86%E3%82%B9%E3%83%88
そういうものなのかな? CGI::escape()は動くのでいいんですけど