php不转义中文字符的 json编码方法

   虽说最新的 PHP 5.4 已经良好支持 JSON 中文编码,即通过 JSON_UNESCAPED_UNICODE 参数,例如:

  json_encode("中文", JSON_UNESCAPED_UNICODE)对于早前 PHP 版本,处理不转义中文字符的 json 编码,之前写过 PHP 输出中文 JSON 字符串这篇文章,这里分享个更完美的方法:

  /**

  * 不转义中文字符的 json 编码方法

  * @param array $arr 待编码数组

  * @return string

  */

  function encode ($arr) {

  $str = json_encode($arr);

  $search = "#u([0-9a-f]+)#ie";

  $replace = "iconv('UCS-2', 'UTF-8', pack('H4', '1'))";

  return preg_replace($search, $replace, $str);

  }

时间: 2024-10-28 13:54:42

php不转义中文字符的 json编码方法的相关文章

php中不转义中文字符的 json 编码方法

虽说最新的 PHP 5.4 已经良好支持 JSON 中文编码,即通过 JSON_UNESCAPED_UNICODE 参数,例如: json_encode("中文", JSON_UNESCAPED_UNICODE)对于早前 PHP 版本,处理不转义中文字符的 json 编码 PHP 和 JavaScript 交互其实很方便,PHP 原生也提供了对 JSON 格式的支持.主要包括 JSON 编码和解码两个函数: json_endoce: http://cn.php.net/json_enc

PHP使用json_encode函数时不转义中文的解决方法_php技巧

本文实例讲述了PHP使用json_encode函数时不转义中文的解决方法.分享给大家供大家参考.具体方法如下: json_encode函数对于gbk中的中文字符是不会转换的或直接转换成空格了,本文就来给各位整理一个关于json不转义中文问题处理技巧,相信对大家有所帮助. 如果你调用 PHP 自带的 json_encode() 函数, 碰到中文时, 中文会被转义掉. 例如: 复制代码 代码如下: echo json_encode(array('你好')); // 输出: ["\u4f60\u597

php中json_encode中文字符乱码解决办法

一.json_encode() 这个是一个对变量进行 JSON 编码常用的函数,但是当文本的格式不是utf-8时,中文的转码会出现一些问题,比如文本为gb2312的时候 示例  代码如下 复制代码 <?php $jsonText = array (  0 => array (   'id' => '1',   'name' => '文本1'  ),  1 => array (   'id' => '2',   'name' => '文本2'   ) ) ;   e

UTF-8和GBK等中文字符编码格式介绍及相互转换

我们有很多时候需要使用中文编码格式,比如gbk.gb2312等,但是因为主要针对中文编码设置,因此并不完全通用,这样一来就有了在各编码间相互转换的需求,比如和UTF8的转换.可是在我使用的过程中,却发现编码转换并没有想象中的简单,或者说可能会出错,即使你使用的系统API.我在使用中,产生一些疑惑,搜索资料也没有完全解决我的问题,因此整理了这篇文章.文章末尾列出了我参考的一些资料或者代码实现等,在此谢过. 本文先各个中文编码进行介绍,只做简单介绍,不涉及详细原理(本文结尾附有链接可参阅),然后实例

CICS HTTP发送中文字符的过程

在中国, 很多客户存在VSAM或者DB2里的信息是由中文字符来表示的.当CICS需要用HTTP协议与外界交换这些中文信息时,应该如何编写代码呢?本文将从CICS作为HTTP服务端和客户端两个方面分别介绍. 首先解释几个重要的概念: Codepage(代码页)- 某一种字符集(character set)针对不同语言的数值.举例来说,037是IBM EBCDIC编码针对美国英语的codepage, 而1388是EBCDIC针对中文的codepage.如果用037的codepage想操作或显示中文,

【ASP】从URL获取中文字符然后查找数据库后输出GBK中文

正题 昨天项目中遇到了些困难,研究了一下午终于搞定了. 事情是这样的:我们的客户端需要访问接口从服务器获取相关数据,接口用get的方式.就是在浏览器里面输入xxxx&xx=xxx&yy=yyy的方式,接口从Request中获取参数然后再访问数据库. 之前参数都是数字或者英文,所以一直没问题,但是昨天要做模糊查询的功能,需要参数中输入中文,于是就出问题了.解析不出结果.尝试了各种方法,包括各种中文转换成UTF-8或者UTF-8转换成GBK等等函数都不尽如意.最后还是通过各种google,然后

解决AJAX中POST或GET传递中文字符乱码

ajax中文乱码有很多原因那么如何解决这个乱码问题呢? 很简单,使用 JS的内置函数 encodeURIComponent 对中文字符串进行转义一下就好了.关于 encodeURIComponent 函数的用法, scape() 方法: 采用ISO Latin字符集对指定的字符串进行编码.所有的空格符.标点符号.特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字).比如,空格符对应的编码是%20. 不会被此方法编码的字符: @ *

编写PHP程序检查字符串中的中文字符个数的实例分享_php实例

有时候我们需要计算一个字符串中包含的字数,对于纯英文字符串,字数等于字符串长度,用 strlen函数即可获得,但如果字符串中包含中文怎办?mb_strlen可以实现,但不幸没装扩展,那就自己实现一下吧. php有一个扩展一般是必装的,我们可以使用mb_strlen来获取字符串中的字数,用法一般如下: $len = mb_strlen("你是我的小苹果","utf-8"); 如愿获得字符串长度:7. 如果没装mb扩展呢?自己实现一下吧. 我们要先明白一个事实:字符串是

MySQL不能插入中文字符及中文字符乱码问题

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8. 在安装后MySQL之后,它的配置文件不是很给力,不知道你们的是不是,反正我的是! 开始插入中文字符的时候出现如下错误: ERROR 1366 (HY000): Incorrect string value: '\xBB\xA7' for column 'Tname': 也就是不支持插入中文字符,于是通过网上的学习,在它的配置文件my-default.ini文件中添加了一些东西: [mysq