perl mojo 短信接口自动识别编码

 [root@yyjk pfwx-master]# cat mojo.pl
use lib "./lib";
use mojo::Client;
use Data::Dumper;
use Mojolicious::Lite;
use JSON qw/encode_json decode_json/;  
use Encode;
no strict;
no warnings;
use JSON; 
use POSIX;
use JSON::RPC::Client;
use Data::Dumper;
use URI::Escape;
use DBI; 
my $dbName = 'serv';  
my $dbUser = 'SMSsendx';  
my $dbUserPass = 'SMSsendx';
#my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database " ;
my $client = mojo::Client->new();
  print Dumper($client);
  get '/api/SMSsendx' => sub {
   my $c = shift;
   #my $sourceip=$c->param('sourceip');
   my $message = $c->param('message');
      print $message."
";
      print "Length1==";
      print length($message)."
"; 
      $sms=$message;
      ##utf-8 flag
      my $flag=Encode::is_utf8($message);
      print "$flag===$flag
";
      if ($flag)
          { 
         Encode::_utf8_off($message);
         print "Length2==";
         print length($message)."
";
         $sms=encode_utf8($sms);
         $sms=encode("gbk",decode("utf8",$sms)) }
      else
          {$message=encode("utf8",decode("gbk",$message)) };
           
      #$message=encode_utf8($message);g===$flag
";
      my $phone = $c->param('phone');
      my @phone= split(/|/,$phone);
      $client->SMSsendx("$sms",@phone);
      #mojo::Client::LoadDb::insertdb(1,$sourceip,$message,$phone);
      #$client->insertdb($sourceip,$message,$phone);
     $c->render(json =>{retcode,0000});
       };

      get '/api/SMSinfo' => sub {
      my $c=shift;
      my $sourceip=$c->param('sourceip');
      my @arr=$client->SMSinfo($sourceip);
        $c->render(json =>@arr);
       };
  app->start;

浏览器发送:
http://10.5.100.232:3000/api/SMSsendx?sourceip=$IP&message=%E4%B8%AD%E5%9B%BD&phone=18072722237



[root@yyjk pfwx-master]# morbo mojo.pl
Server available at http://127.0.0.1:3000
$VAR1 = bless( {
                 'client_version' => '1.0'
               }, 'mojo::Client' );
[Fri Dec 22 08:41:14 2017] [debug] GET "/api/SMSsendx"
[Fri Dec 22 08:41:14 2017] [debug] Routing to a callback
中国
Length1==2
$flag===1
Length2==6
-----------------
-----------------
0Xd    015802        N    ?1    18072722237    
-----------------
sent data of length 32
received response: 0000
[Fri Dec 22 08:41:14 2017] [debug] 200 OK (0.01515s, 66.007/s

这个时候发送的是utf8编码



shell utf8终端测试;
[root@yyjk ~]# echo $LANG
zh_CN.UTF-8

[root@yyjk ~]# curl 'http://10.5.100.232:3000/api/SMSsendx?sourceip=$IP&message=韩国&phone=18072722237'
{"retcode":0}[root@yyjk ~]# 


[Fri Dec 22 08:43:49 2017] [debug] GET "/api/SMSsendx"
[Fri Dec 22 08:43:49 2017] [debug] Routing to a callback
韩国
Length1==2
$flag===1
Length2==6
-----------------
-----------------
0Xd    015802        N    o?1    18072722237    
-----------------
sent data of length 32
received response: 0000
[Fri Dec 22 08:43:49 2017] [debug] 200 OK (0.006153s, 162.522/s)



shell gbk 终端测试:

[root@yyjk ~]# echo $LANG
zh_CN
[root@yyjk ~]# curl 'http://10.5.100.232:3000/api/SMSsendx?sourceip=$IP&message=泰国&phone=18072722237'
{"retcode":0}[root@yyjk ~]# 

[Fri Dec 22 08:45:05 2017] [debug] GET "/api/SMSsendx"
[Fri Dec 22 08:45:05 2017] [debug] Routing to a callback
?1
Length1==4
$flag===
-----------------
-----------------
0Xd    015802        N    ?1    18072722237    
-----------------
sent data of length 32
received response: 0000
[Fri Dec 22 08:45:05 2017] [debug] 200 OK (0.011068s, 90.351/s)

原文地址:https://www.cnblogs.com/hzcya1995/p/13349387.html