转自:http://www.cnblogs.com/oldphper/p/4123415.html

本文列举3个方法,实现json_encode()后的string显示中文问题。

做接口时不需要,但存log时帮了大忙了。

在贴代码前,必须贴上官方param和return,链接:http://php.net/manual/zh/function.json-encode.php

参数

value

待编码的 value ,除了resource 类型之外,可以为任何数据类型

该函数只能接受 UTF-8 编码的数据

options

由以下常量组成的二进制掩码: JSON_HEX_QUOTJSON_HEX_TAGJSON_HEX_AMPJSON_HEX_APOS,JSON_NUMERIC_CHECKJSON_PRETTY_PRINTJSON_UNESCAPED_SLASHESJSON_FORCE_OBJECT,JSON_UNESCAPED_UNICODE.

返回值

编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。

<?php
// json_encode() 保持中文方法详解 $arr['city'] = '北京';
$arr['name'] = 'weilong'; // 直接输出
// Res: {"city":"\u5317\u4eac","name":"weilong"}
echo json_encode($arr), "\n"; // 1. 加参数,PHP版本>5.4.0
// Res: {"city":"北京","name":"weilong"}
echo json_encode($arr, JSON_UNESCAPED_UNICODE), "\n"; // php > 5.4.0 // 2. 正则替换,json_encode后,正则将编码替换成中文
// Res: {"city":"北京","name":"weilong"}
echo preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", json_encode($arr)), "\n"; // 3. urldecode()、urlencode()函数,不推荐
// Res1: null, Res2: {"city":"北京","name":"weilong"}
echo urldecode(json_encode(urlencode($arr))), "\n";
$arr['city'] = urlencode($arr['city']); // urlencode()参数必须是string
echo urldecode(json_encode($arr)), "\n"; // 另外注意json_decode()参数区别。
$arr['city'] = '北京';
$arr['name'] = 'weilong';
$str = json_encode($arr);
$str2 = json_decode($str);
$str3 = json_decode($str, true); print_r($str2); // object
/* Res:
stdClass Object
(
[city] => 北京
[name] => weilong
) */ print_r($str3); // array
/* Res:
Array
(
[city] => 北京
[name] => weilong
)
*/

【转】php json_encode中文为空的解决办法的更多相关文章

  1. dedecms织梦后台发布文章提示“标题不能为空”的解决办法

    V5.7登录后台后,发布英文标题没问题,发布中文会提示“标题不能为空”. 原因:htmlspecialchars在php5.4默认为utf8编码,gbk编码字符串经 htmlspecialchars ...

  2. linux中文显示乱码的解决办法

    linux中文显示乱码的解决办法 linux中文显示乱码是一件让人很头疼的事情. linux中文显示乱码的解决办法:[root@kk]#vi /etc/sysconfig/i18n将文件中的内容修改为 ...

  3. .NET在IE9中页面间URL传递中文变成乱码的解决办法

     在.Net的项目中,鼠标点击查询按钮,转到查询页面,但URL中包含中文时,传到服务器端后,中文变成了乱码(只有IE9出现该问题).       尝试使用Server.UrlEncode()进行编码, ...

  4. VMware下ubuntu与win8共享文件时/mnt/hgfs目录为空的解决办法

    VMware下ubuntu(guest)与win8共享文件时/mnt/hgfs目录为空的解决办法 环境:VMware-player-5.0.2-1031769 + ubuntu13.04 1.安装vm ...

  5. 第26月第9天 getActionBar为空的解决办法

    1.python 包路径 export PYTHONPATH=路径 https://blog.csdn.net/machinezj/article/details/60137666 2.getActi ...

  6. hexo创建的tags和categories页面为空的解决办法

    title: hexo创建的tags和categories页面为空的解决办法 toc: false date: 2018-04-16 02:26:10 主题:landscape 添加type以及men ...

  7. codeblocks中文乱码原因及解决办法

    原因:(本地化做得不够好)默认情况下codeblocks编辑器保存源文件是保存为windows本地编码,就是WINDOWS-936字符集,即GBK:但CB的编辑器在默认编辑的时候是按照UTF-8来解析 ...

  8. eclipse中js中文乱码问题的解决办法

    在Eclipse中编辑JS文件简直是一种折磨,但是却总是很无奈得要去适应. 这里说一下Eclipse中,编辑JS文件时候,出现中文乱码问题的解决办法. 这个问题很容易想到是文件编码的问题,因此通常是修 ...

  9. loadrunner11录制为空的解决办法(win7+chrome最新版本)

    参考:https://www.cnblogs.com/zhang-zhi/archive/2018/09/10/9622605.html loadrunner11在win7中,使用chrome浏览器的 ...

随机推荐

  1. java Thread编程(三) 同步的两种不同实现方式

    1,创建需要同步的对象(方式一) package concurrency; public class Bank { private double amount; public Bank(double ...

  2. Activiti 学习资料收集

    Activiti工作流引擎使用 http://www.open-open.com/lib/view/open1350460225367.html Activiti初学者教程 http://blog.c ...

  3. JSP九个内置对象

    JSP内置对象有: 1.request对象      客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例. 2.r ...

  4. 【HDU 5387】Clock

    题 Description Give a time.(hh:mm:ss),you should answer the angle between any two of the minute.hour. ...

  5. getchar() 和 scanf("%c")的区别

    getchar()和scanf("%c")的功能都是从STDIN读一个字符,单论功能两者没有区别. 但两者的返回值是有区别的: -------------------------- ...

  6. nginx在linux中安装

    下载地址:http://qkxue.net/ 1.2    解压 使用命令:tar zxvf nginx-1.8.1.tar.gz 1.3    切换至解压目录,安装依赖 yum -y install ...

  7. boost解析json

    #include <QtCore/QCoreApplication> #include <boost/property_tree/ptree.hpp> #include < ...

  8. Java初学(三)

    一.使用键盘录入数据 三步:1.导入包:import  java.util.Scanner; 2.创建键盘录入对象:Scanner sc=new  Scanner(System.in);   3.通过 ...

  9. 使用servletAPI三种方式简单示例

    一.直接实现Action接口或集成ActionSupport类(推荐) public class HelloAction implements Action { @Override public St ...

  10. 可输入自动匹配Select——jquery ui autocomplete

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...