例子:
1. 有php的 json函数生成的中文串

[root@tts177:/tmp]$/opt/php/bin/php -r 'echo json_encode(Array("a"=>"测试"))."\n";'
{"a":"\u6d4b\u8bd5"}
[root@tts177:/tmp]$

2. perl代码和执行结果如下:

[root@tts177:/tmp]$more uuu.pl
#!/usr/bin/perl
use warnings;
use Data::Dumper;
use JSON;
use Encode;
use URI::Escape;

my $str = '{"a":"\u6d4b\u8bd5"}';   ##就是上面的php字符串
my $p = decode_json($str);
print Dumper $p;
[root@tts177:/tmp]$
[root@tts177:/tmp]$./uuu.pl
$VAR1 = {
'a' => "\x{6d4b}\x{8bd5}"  ##怪了吧,要是用php自带的json_decode($str,true)函数,解析出来的就是正常中文。
};
[root@tts177:/tmp]$

3. 解决方法,参考:
http://bbs.chinaunix.net/thread-1340623-1-1.html     6楼的帖子

4. 如下代码是解决方法

[root@tts177:/tmp]$more uuu.pl
#!/usr/bin/perl
use warnings;
use Data::Dumper;
use JSON;
use Encode;
use URI::Escape;   ##正如帖子所说,不能用"use utf8"

my $str = '{"a":"\u6d4b\u8bd5"}';
my $p = decode_json($str);

my $s = $p->{'a'};
print $s,"\n";    ##第一个打印会打印出"Wide character in print at ./uuu.pl line 12." ,而且有时候还是乱码!

utf8::encode($s);   ##这里要非常注意,此函数返回值为0。如果写成  $s = utf::encode($s); 就错了!
print $s,"\n";

[root@tts177:/tmp]$
[root@tts177:/tmp]$./uuu.pl
Wide character in print at ./uuu.pl line 12.
测试
测试
[root@tts177:/tmp]$

[root@tts177:/tmp]$more uuu.pl
#!/usr/bin/perl
use warnings;
use Data::Dumper;
#use URI::Escape;
my $unicode = "\x{505c}\x{8f66}";
utf8::encode( $unicode );
print $unicode;

[root@tts177:/tmp]$
[root@tts177:/tmp]$./uuu.pl
停车[root@tts177:/tmp]$

perl处理含有中文字符的json编码的更多相关文章

  1. Tomcat 中get请求中含有中文字符时乱码的处理

    Tomcat 中get请求中含有中文字符时乱码的处理

  2. jQuery判断字符串是否含有中文字符

    //判断字符串是不是中文String.prototype.isChinese = function () {    var reg = /[^\x00-\xff]/ig;//判断是否存在中文和全角字符 ...

  3. CP策略含有中文字符提交失败故障解决

    硬件平台:CP5600 系统版本:R80.10 补丁版本:TAKE103 故障现象:提交新增策略失败,日志显示 if the problem persists contact Checkpoint S ...

  4. 编码占用的字节数 1 byte 8 bit 1 sh 1 bit 中文字符编码 2. 字符与编码在程序中的实现 变长编码 Unicode UTF-8 转换 在网络上传输 保存到磁盘上 bytes

    小结: 1.UNICODE 字符集编码的标准有很多种,比如:UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig 等: 2 服务器->网页 utf-8 ...

  5. Servlet & JSP - 中文字符问题

    Servlet 中的中文字符 来自 URL 参数部分的中文字符 Tomcat 默认接收数据的编码是 ISO-8859-1.所以当请求 URL 的参数部分含有中文字符,需要转换字符的编码. Enumer ...

  6. [python]有中文字符程序异常的解决方案

    一. 含有中文字符无法运行 在python3中用的是Unicode编码,Unicode号称万国码,可以向所有的编码进行兼容.不会出现这种问题. Python2中使用的是ASCII编码,会出现这种问题. ...

  7. 中文字符 unicode转utf-8函数 python实现

    unicode编码范围 00000000-0000007F的字符,用单个字节来表示: 00000080-000007FF的字符用两个字节表示 (中文的编码范围) 00000800-0000FFFF的字 ...

  8. Java实现 中文转换成Unicode编码 和 Unicode编码转换成中文

    想要实现中文字符转换为Unicode编码的话主要用到的是一个这样的包,自己可以去API文档里面查看下的 java.util.Properties; 直接进入主题吧,主要是 package Test01 ...

  9. ajax 传递中文字符参数 问题

    使用ajax 传递中文字符串时, 服务端会接收不到预期的 中文字符. 此时,需要对 js中的中文字符参数进行 编码,  到达服务端后, 再为其解码 即可. 前端: var url = '....'; ...

随机推荐

  1. shell之脚本练习

    脚本需求集合贴-自主开发的 对频繁执行的任务有编写脚本的价值 对单次执行的任务就用笨的,简单的办法 1.对asterisk写一个脚本 查日志 输入日期--能够输出对应日期的日志 输入多个条件--能够输 ...

  2. tagName和nodeName的区别

      首先介绍DOM里常见的三种节点类型(总共有12种,如docment):元素节点,属性节点以及文本节点,例如<h2 class="title">head</h2 ...

  3. 解决Android AVD的方向键DPAD不能用的问题

    Android AVD在生成出来一个新的模拟器之后默认都是不能够使用DPAD的.原因是它禁用了. 解决方式如下 : 找到C:\Documents and Settings\Administrator\ ...

  4. html之table标签

    简单的html表格,由table元素以及一个或多个tr,th,td元素组成. tr:定义表格行 th:定义表格头 td:定义表格单元 更复杂的 HTML 表格也可能包括 caption.col.col ...

  5. 创建对象的最好方式&最好的继承机制(代码实例)

    /* 创建对象的最好方式:混合的构造函数/原型方式, *用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法) */ function People(sname){ this.nam ...

  6. NET 2.0 OCR文字识别技术(Tesseract 引擎)[转]

    一.OCR简介  参见http://baike.baidu.com/view/17761.htm?fr=ala0_1  大家参照,我第一次也是这么了解的,呵呵.高手见笑 现在市面上好多OCR 引擎,不 ...

  7. The connection to adb is down, and a severe error has occured.

    启动android模拟器时.有时会报The connection to adb is down, and a severe error has occured.的错误.在网友说在任务管理器上把所有ad ...

  8. 高性能MySQL --- 读书笔记(2) - 2016/8/2

    第1章 MySQL架构 MySQL架构与其他数据库服务器大不相同,这使它能够适应广泛的应用.MySQL足够灵活,能适应高要求架构.例如Web应用,同时还适用于嵌入式应用.数据仓库.内容索引和分发软件. ...

  9. SSH_框架整合2—查询显示

    4. 完成功能. (1)com.atguigu.ssh.actions包下新建EmployeeAction.java package com.atguigu.ssh.actions; import j ...

  10. 【initrd】向虚拟文件系统initrd.img中添加驱动

    虚拟文件系统:initrd-2.6.18-194.el5.img 希望添加网卡或SCSI等驱动 步骤: 解压initrd-2.6.18-194.el5.img: 添加*.ko文件,并修改init可执行 ...