通过demo搞懂encode_utf8和decode_utf8
perl 编码问题; use utf8表示代码使用UTF-8写的 [root@wx03 0710]# cat a1.pl
#use utf8;
my $str='测试utf8字符集';
print $str."\n";
[root@wx03 0710]# perl a1.pl
测试utf8字符集 [root@wx03 0710]# cat a1.pl
use utf8;
my $str='测试utf8字符集';
print $str."\n";
[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."\n"; 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\n";
}
else {
die $response->status_line;
}; if ($r =~/$b/){print "11111111111\n"};
[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."\n"; #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\n";
}
else {
die $response->status_line;
}; if ($r =~/$b/){print "11111111111\n"};
[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 "测试更健康\n";
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\n";
next if ($str !~ /$d/);
print "2--------\$str is $str\n";
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 "测试更健康\n";
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\n";
next if ($str !~ /$d/);
print "2--------\$str is $str\n";
#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!\n","2016-04-22 11:02:01,259 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:æ¨çéªè¯ç 为813231ï¼æ¬éªè¯ç 30åéå ææã to phoneNo:18072722237 succeed!\n"][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 "测试更健康\n";
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\n";
next if ($str !~ /$d/);
print "2--------\$str is $str\n";
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!\n","2016-04-22 11:02:01,259 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为813231,本验证码30分钟内有效。 to phoneNo:18072722237 succeed!\n"][root@wx03 ~]#
通过demo搞懂encode_utf8和decode_utf8的更多相关文章
- 来一轮带注释的demo,彻底搞懂javascript中的replace函数
javascript这门语言一直就像一位带着面纱的美女,总是看不清,摸不透,一直专注服务器端,也从来没有特别重视过,直到最近几年,javascript越来越重要,越来越通用.最近和前端走的比较近,借此 ...
- java线程间通信:一个小Demo完全搞懂
版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...
- 每个java初学者都应该搞懂的问题
对于这个系列里的问题,每个学JAVA的人都应该搞懂.当然,如果只是学JAVA玩玩就无所谓了.如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列.内容均来自于CSDN的经典老贴. ...
- 一夜搞懂 | JVM 字节码执行引擎
前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 GIthub 博客 学习导图 一.为什么要学习字节码执行引擎? 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一 ...
- Java进阶专题(二十六) 将近2万字的Dubbo原理解析,彻底搞懂dubbo
前言 前面我们研究了RPC的原理,市面上有很多基于RPC思想实现的框架,比如有Dubbo.今天就从Dubbo的SPI机制.服务注册与发现源码及网络通信过程去深入剖析下Dubbo. Dubbo架构 ...
- 升级过log4j,却还没搞懂log4j漏洞的本质?
摘要:log4j远程代码漏洞问题被大范围曝光后已经有一段时间了,今天完整讲清JNDI和RMI以及该漏洞的深层原因. 本文分享自华为云社区<升级过log4j,却还没搞懂log4j漏洞的本质?为你完 ...
- 彻底搞懂Javascript的“==”
本文转载自:@manxisuo的<通过一张简单的图,让你彻底地.永久地搞懂JS的==运算>. 大家知道,==是JavaScript中比较复杂的一个运算符.它的运算规则奇怪,容让人犯错,从而 ...
- 完全搞懂傅里叶变换和小波(2)——三个中值定理<转载>
书接上文,本文章是该系列的第二篇,按照总纲中给出的框架,本节介绍三个中值定理,包括它们的证明及几何意义.这三个中值定理是高等数学中非常基础的部分,如果读者对于高数的内容已经非常了解,大可跳过此部分.当 ...
- 完全搞懂傅里叶变换和小波(1)——总纲<转载>
无论是学习信号处理,还是做图像.音视频处理方面的研究,你永远避不开的一个内容,就是傅里叶变换和小波.但是这两个东西其实并不容易弄懂,或者说其实是非常抽象和晦涩的! 完全搞懂傅里叶变换和小波,你至少需要 ...
随机推荐
- jQuery中的$extend()介绍
jQuery.extend 函数详解 JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解 ...
- SiteMesh
1.导入对SiteMesh.jar的依赖 <dependency> <groupId>org.sitemesh</groupId> <ar ...
- hdu1533解题报告
题意:这里有一个N*M的方格图.....图中m代表人,H代表房子...并且人数和房子的数量是相等的..那么.每个人可以竖直或者横向走一格,并且花费1S元...那么为了让所有的人进入房子,求解最小的花费 ...
- android自定义控件 onMeasure() 测量尺寸
上次讲的自定义控件刷新点屏幕的任意地方都会刷新,而且在xml里自定义控件下面放一个textview的话,这个TextView是显示不出来的,不只这个,以前的几个自定义控件都是 为什么呢?今天来讲下on ...
- CentOS配置防火墙
昨天帮朋友配置CentOSserver,一開始为了方便測试直接把防火墙关了.之后便须要配置好防火墙,网上找了几个防火墙规则都有错误,后来发现是博主发帖不认真,有太多字符错误,以下是我整理的亲測可用的防 ...
- BZOJ 3408: [Usaco2009 Oct]Heat Wave 热浪( 最短路 )
普通的最短路...dijkstra水过.. ------------------------------------------------------------------------------ ...
- CUDA纹理绑定
纹理绑定的一般步骤: size_t fea_pitch; texture<unsigned char, 2> features2D; cudaMallocPitch((void**)(&a ...
- Oracle中的单引号问题
SELECT '<a href="javascript:void(0)" onclick="openWyl('''||a.aac001 FROM ac01 a; S ...
- PyQt中如何隐藏Menu
PyQt中隐藏一个Menu Item,可以通过QAction的setVisible(False)来设置,而QMenu的setVisible(False)是不管用的. 现在问题来了,我们有一个菜单,它有 ...
- XCode 快速注释插件
下载VVDocumenter-Xcode这个插件 打开编译后,重启Xcode 输入///,如效果图,Window->VVDocumenter自己定制风格