phpjson中文乱码
Ⅰ php JSON_ENCODE使用后中文变成百分号乱码了
看到这幅握哪图会了判行吗?呵呵段冲码也是utf-8编码
Ⅱ PHP从Mysql查出来的数据转换成json格式中文乱码怎么解决
解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:
//urlencode处理
functionjson_array($obj){
foreach($objas$key=>$value){
if(is_array($obj[$key])){
$obj[$key]=json_array($obj[$key]);
}else{
$obj[$key]=urlencode($value);
}
}
return$obj;
}
//urldecode解密转换为中文字符
function_json($obj){
returnurldecode(json_encode(json_array($obj)));
}
echo_json($json);//$json为你要输出的json数组
此处递归调用是为了处理多维数组······
Ⅲ 我做php的,ajax传值乱码,乱码都是这种方式:%u5BB4,以%u开头的!请问怎么解决呀
JQuery在Ajax提交出现中文乱码的解决办法:
因为编码的原因
可能存在以下几点原因:
1.HTML的编码不统一:如页面用的GB2312,好像JQuery对它支持不太好。以前我一直都是用UTF-8的,一直都没有发现;
2.文件的编码,这个不好在
表面上看到,简体中文版的操作系统存的文本格式的文件默认是 GB2312,建议把文件换成UTF-8格式的
最简单的解决办法,把提交的中文文本用 JS的 escape 处理一下,就不会现出现乱码了。
如:
//保存数据
$.ajax({
url:"/guide/savecomments.aspx" ,
type:"POST" ,
dataType:"json" ,
data:"Action=SaveComment&CommNickName=" +escape
(CommNickName.val()) + "&CommContent=" +escape(CommContent.val()) + "&GuideID=" + GuideID.val() + "&ScoreLogType=<%=ScoreLogType %>",
success:function
(results){
alert(results.message);
}
});
Ⅳ php在将数组转成json的时候,key值是中文的,乱码怎么解决!
乱宴大源码的话是因为文件的格式不正确,而网页编码是默认为文件编码格式的,JSON又是UTF-8编码,所以你的文件可能是GB2312格式仿辩,所以导致JSON内的中文乱码。
这种情况转换晌态为UTF-8格式就可以了。
(注意,转换成无BOM格式的,记事本转换的UTF-8是带BOM的,会导致JSON无法正确解析)
Ⅳ php json decode 中文乱码
呵呵,如果你查看一下手册就知道了,json_encode()这个函数只能编码utf-8的字符,就是说你给他传入的参数只能是utf-8格式。所以捏,你在encode之前,需要将你的汉字编码转化为utf-8的格式,然后再encode,这样就不会有问题了。
Ⅵ PHP中json_encode中文乱码问题
php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
//结果
//{"a":1,"b":2,"c":3,"d":4,"e":5}
/*
下面看一款json_encode中文乱码问题
解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来
*/
function arrayrecursive(&$array, $function, $apply_to_keys_also = false)
{
static $recursive_counter = 0;
if (++$recursive_counter > 1000) {
die('possible deep recursion attack');
}
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayrecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
/**************************************************************
*
* 将数组转换为json字符串(兼容中文)
* @param array $array 要转换的数组
* @return string 转换得到的json字符串
* @access public
*
*************************************************************/
function json($array) {
arrayrecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}
$array = array
(
'name'=>'希亚',
'age'=>20
);
echo json($array);
//应用实例
$servname="localhost";
$sqlservname="root";
$sqlservpws="123456";
$sqlname="lock1";
$db=mysql教程_connect($servname,$sqlservname,$sqlservpws) or die("数据库教程连接失败");
mysql_select_db($sqlname,$db);
$sql = "select * from t_operater";
$result =mysql_query($sql);
$rows = mysql_num_rows($result);
while($obj = mysql_fetch_object($result))
{
$arr[] = $obj;
}
echo '({"total":"'.$rows.'","results":'.json_encode($arr).'})';
Ⅶ 如何解决PHP中文乱码问题
PHP中文乱码主要是编码不对,存在以下两种情况,你以此检查一下 ,改对编码就行了
1、 php文件本身的编码与网页的编码应匹配
a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。
b. 如果欲使用utf-8编码,那么php要输出头 :header(“Content-Type: text/html; charset=utf-8"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用 session就会出问题,可用editplus来保存,在editplus中,工具->参数选择->文件->UTF-8签名,选择总 是删除,再保存就可以去掉BOM信息了。
2. php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码。