php 处理 json_encode 中文显示问题

/**
 * 对数组和标量进行 urlencode 处理
 * 通常调用 wphp_json_encode()
 * 处理 json_encode 中文显示问题
 * @param array $data
 * @return string
 */
function wphp_urlencode($data) {
	if (is_array($data) || is_object($data)) {
		foreach ($data as $k => $v) {
			if (is_scalar($v)) {
				if (is_array($data)) {
					$data[$k] = urlencode($v);
				} else if (is_object($data)) {
					$data->$k = urlencode($v);
				}
			} else if (is_array($data)) {
				$data[$k] = wphp_urlencode($v); //递归调用该函数
			} else if (is_object($data)) {
				$data->$k = wphp_urlencode($v);
			}
		}
	}
	return $data;
}
/**
 * json 编码
 *
 * 解决中文经过 json_encode() 处理后显示不直观的情况
 * 如默认会将"中文"变成"\u4e2d\u6587",不直观
 * 如无特殊需求,并不建议使用该函数,直接使用 json_encode 更好,省资源
 * json_encode() 的参数编码格式为 UTF-8 时方可正常工作
 *
 * @param array|object $data
 * @return array|object
 */
function ch_json_encode($data) {
	$ret = wphp_urlencode($data);
	$ret = json_encode($ret);
	return urldecode($ret);
}

  

  

时间: 2024-10-24 15:34:23

php 处理 json_encode 中文显示问题的相关文章

PHP json_encode中文乱码解决方法

<?php /** * [PHP json_encode中文乱码解决方法] * 这里说的"中文乱码"其实不是不是真的乱码,而是在最后的json结果中显示下面的字串: * {"name":"\u4e2d\u6587\u5b57\u7b26\u4e32″,"value":"test"} * * [解决办法] * 在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode

php 解决json_encode中文null和UNICODE转码问题

1.iconv("gb2312","utf-8//IGNORE",$str),转码,这样转码后显示的汉字是uicode码,下面将unicode转为中文2.$array = array( 'test'=>urlencode("我是测试") ); $array = json_encode($array); echo urldecode($array); //{"test":"我是测试"} php 解决js

php输出json中文显示编码-解决办法

$str = "中华人民共和国";$ar = array( "a" => "a0", "b" => "b0", "c" => "c0", "d" => "d0", "e" => $str, );echo preg_replace("#\\\u([0-9a-f]{4})#

cocos2d-x wp8 中文显示问题

cocos2d-x项目在wp8下中文显示不了,有两个原因: 1. 本身字符串的utf8编码, 有问题. 2. 显示中文所需要的字体,缺失. 要解决第二个问题很简单,在fonts下添加一个中文字体,在显示的时候制定此中文字体 labelArcade = CCLabelTTF::create("中文字符串", "中文字体名称",字体大小); 至于第一个问题,说的是不能像上文那样直接用字符串写"中文字符串",解决方案有gb2312ToUnicode的方

Ubuntu CTRL+ALT+F1~F6 进入命令模式后不支持中文显示的解决办法

前言 我在实验进入linux系统启动xwindow server而不启动KDE GNOME等桌面系统时遇到的问题.只启动x server而不启动桌面系统,在xserver之上运行一个全屏的图形界面程序,这样就能实现该程序对显示器的独占,对一般用户来说他就不能在这台电脑上搞别的动作了,只能用这个程序.一些工业控制.超市收银等应用场景下都会有这样的需求,目前这些程序都运行在windows xp (embeded)之下,也有运行于dos的.由于windows xp太被大众熟悉了,结果这些软件便不能稳定

Atom中文显示乱码问题 UTF-8

Atom中文显示乱码问题 本来就是UTF-8文件,但中文还是显示不了.换了GBK.GB18030也不行. 解决方法: 给atom编辑器设置字体 从菜单中打开 Edit->Open your config选项,或者Packages->Setting views->Open, 找到config.cson文件中的editor子项,或者setting views中的font-family选项,把字体设置成 文泉驿 系列字体才可以显示中文.比如: 文泉驿微米黑,文泉驛微米黑,WenQuanYi M

Qt中文显示

QT默认的编码(unicode)是不能显示中文的,可能由于windows的默认编码的问题,windows默认使用(GBK/GB2312/GB18030),所以需要来更改QT程序的编码来解决中文显示的问题. QT中有专门的一个类来处理编码的问题(QTextCodec). 在QT3中,QApplication可以设置程序的默认编码,但是在QT4中已经没有了该成员函数.可以以下的这些方法来设置编码. 1. 设置QObject的成员函数tr()的编码. QTextCodec::setCodecForTr

解决osgEarth中文显示乱码的几种方法

解决osgEarth中文显示乱码的几种方法 在此感谢那些在路上那个帮助过别人的朋友,谢谢. 方法一: 通过自己写函数转换类型. 下面这三个函数先复制过去吧. void unicodeToUTF8(const std::wstring &src, std::string& result) { int n = WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, 0, 0, 0, 0 ); result.resize(n); ::WideCharT

python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)

最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指正. 一.最简单的基本框架如下:已知x,y,画出折线图并保存.此时x和y均为数字. 1 # -*- coding: utf-8 -*- 2 3 import matplotlib.pyplot as plt #引入matplotlib的pyplot子库,用于画简单的2D图 4 import random 5