perl 编码问题; use utf8表示代码使用UTF-8写的 [root@wx03 0710]# cat a1.pl #use utf8; my $str='测试utf8字符集'; print $str." "; [root@wx03 0710]# perl a1.pl 测试utf8字符集 [root@wx03 0710]# cat a1.pl use utf8; my $str='测试utf8字符集'; print $str." "; [root@wx03 0710]# perl a1.pl Wide character in print at a1.pl line 3. 测试utf8字符集 [root@dr-mysql01 0710]# cat a1.pl use utf8; my $a='验证'; print $a." "; my $b=$a; #my $b=encode_utf8($a); my $url="http://192.168.32.101:3000/api/getcode?env=zj&phone=18072722237"; use LWP::UserAgent; use Encode; #use utf8; my $ua = LWP::UserAgent->new; $ua->timeout(10); $ua->env_proxy; $ua->agent("Mozilla/8.0"); my $response = $ua->get($url); if ($response->is_success) { $r= $response->decoded_content; # or whatever print "$r is $r "; } else { die $response->status_line; }; if ($r =~/$b/){print "11111111111 "}; [root@dr-mysql01 0710]# perl a1.pl Wide character in print at a1.pl line 3. 验证 $r is [["18072722237","ZJ没有找到需要的验证码信息"]] 此时没有匹配到 [root@dr-mysql01 0710]# cat a1.pl use utf8; my $a='验证'; print $a." "; #my $b=$a; my $b=encode_utf8($a); my $url="http://192.168.32.101:3000/api/getcode?env=zj&phone=18072722237"; use LWP::UserAgent; use Encode; #use utf8; my $ua = LWP::UserAgent->new; $ua->timeout(10); $ua->env_proxy; $ua->agent("Mozilla/8.0"); my $response = $ua->get($url); if ($response->is_success) { $r= $response->decoded_content; # or whatever print "$r is $r "; } else { die $response->status_line; }; if ($r =~/$b/){print "11111111111 "}; [root@dr-mysql01 0710]# perl a1.pl Wide character in print at a1.pl line 3. 验证 $r is [["18072722237","ZJ没有找到需要的验证码信息"]] 11111111111 此时匹配到了 在看看mojo里的 默认使用utf8; 此时返回空:[root@wx03 ~]# curl http://120.55.118.6:3000/admin/api/menu [][root@wx03 ~]# [root@wx03 mojo]# cat test.pl use Mojolicious::Lite; use JSON qw/encode_json decode_json/; use Encode; no strict; use JSON; use Data::Dumper; # /foo?user=sri get '/admin/api/menu' => sub { my $c = shift; print "测试更健康 "; open (LOG1 ,"<",'/data01/applog_backup/zj-api01-catalina.out') or die $!; while (<LOG1>) { my $phone='18072722237'; #2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed! if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_; # my $d=encode_utf8('验证'); my $d='验证'; print "1-------$str is $str "; next if ($str !~ /$d/); print "2--------$str is $str "; push (@arr1 ,decode_utf8($str)); }}; close LOG1; $c->render(json => @arr1 ); }; app->start; /************************************************************************************ [root@wx03 mojo]# cat test.pl use Mojolicious::Lite; use JSON qw/encode_json decode_json/; use Encode; no strict; use JSON; use Data::Dumper; # /foo?user=sri get '/admin/api/menu' => sub { my $c = shift; print "测试更健康 "; open (LOG1 ,"<",'/data01/applog_backup/zj-api01-catalina.out') or die $!; while (<LOG1>) { my $phone='18072722237'; #2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed! if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_; my $d=encode_utf8('验证'); # my $d='验证'; print "1-------$str is $str "; next if ($str !~ /$d/); print "2--------$str is $str "; #push (@arr1 ,decode_utf8($str)); push (@arr1 ,$str); }}; close LOG1; $c->render(json => @arr1 ); }; app->start; 此时返回乱码: [root@wx03 ~]# curl http://120.55.118.6:3000/admin/api/menu ["2016-04-22 11:02:01,259 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:æ¨çéªè¯ç 为813231ï¼æ¬éªè¯ç 30åéå ææã to phoneNo:18072722237 succeed! ","2016-04-22 11:02:01,259 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:æ¨çéªè¯ç 为813231ï¼æ¬éªè¯ç 30åéå ææã to phoneNo:18072722237 succeed! "][root@wx03 ~]# /************************************************************************************ [root@wx03 mojo]# cat test.pl use Mojolicious::Lite; use JSON qw/encode_json decode_json/; use Encode; no strict; use JSON; use Data::Dumper; # /foo?user=sri get '/admin/api/menu' => sub { my $c = shift; print "测试更健康 "; open (LOG1 ,"<",'/data01/applog_backup/zj-api01-catalina.out') or die $!; while (<LOG1>) { my $phone='18072722237'; #2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed! if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_; my $d=encode_utf8('验证'); # my $d='验证'; print "1-------$str is $str "; next if ($str !~ /$d/); print "2--------$str is $str "; push (@arr1 ,decode_utf8($str)); }}; close LOG1; $c->render(json => @arr1 ); }; app->start; 此时返回: ][root@wx03 ~]# curl http://120.55.118.6:3000/admin/api/menu ["2016-04-22 11:02:01,259 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为813231,本验证码30分钟内有效。 to phoneNo:18072722237 succeed! ","2016-04-22 11:02:01,259 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为813231,本验证码30分钟内有效。 to phoneNo:18072722237 succeed! "][root@wx03 ~]#