最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何解决php ajax中文乱码问题

来源:动视网 责编:小采 时间:2020-11-27 14:00:09
文档

如何解决php ajax中文乱码问题

如何解决php ajax中文乱码问题:php ajax中文乱码的解决办法:1、所有数据统一使用utf-8编码,包括从数据库编码,php编码和前端编码;2、使用arrayRecursive方法,对每个字符分别编码即可。推荐:《PHP视频教程》php使用ajax中文乱码问题在php中,从数据库提取数据之后,一般我们会一次提取
推荐度:
导读如何解决php ajax中文乱码问题:php ajax中文乱码的解决办法:1、所有数据统一使用utf-8编码,包括从数据库编码,php编码和前端编码;2、使用arrayRecursive方法,对每个字符分别编码即可。推荐:《PHP视频教程》php使用ajax中文乱码问题在php中,从数据库提取数据之后,一般我们会一次提取


推荐:《PHP视频教程》

php使用ajax中文乱码问题

在php中,从数据库提取数据之后,一般我们会一次提取多行数据,如果前端的js使用的是ajax与后端交互的话,php只能echo一个数据,但是我们的数据有多个,所以只能一个数组过去,这就使用到了json_encode()函数,json_encode()函数的意思是把数据转化成json数据。

我们看一下如何转换,

php数组:

首先我们在php里新建两个数组,一个包含中文,另一个包含数字或英文,最后输出看一下。 主意:关联数值更直观一点

$gg=array('a'=>'中国','b'=>'日本','c'=>'美国','d'=>'加拿大','e'=>'法国');
$yy=array('f'=>'6','g'=>'7','h'>='8','i'=>'tom','j'=>'kevin');

只输出其中一个数组:

echo $json=json_encode($gg);

输出结果如下

{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"}

两边分别是大括号,而且乱码

把两个数组同时放在一个数组同时输出

echo $json=json_encode(array($gg,$yy));

输出结果如下:

[{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"},{"f":"6","g":"7","0":true,"i":"tom","j":"kevin"}]

我们可以看到,数组里的数组经过json格式之后,数据装在【】中括号里,里面的数组又分别在{}大括号里,但是还是乱码。

针对乱码问题,有两个方法,

方法一:所有数据统一使用utf-8编码,包括从数据库编码,php编码和前端编码。

方法二:使用下面两个函数,对每个字符分别编码:(有的符号貌似转义不成功,不提倡使用该方法)

function JSON($array) { 
 arrayRecursive($array, 'urlencode', true); 
 $json = json_encode($array); 
 return urldecode($json); 
}
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--; 
}


使用这两个函数之后,输出结果为:

[{"a":"中国","b":"日本","c":"美国","d":"加拿大","e":"法国"},{"f":"6","g":"7","0":"1","i":"tom","j":"kevin"}]

文档

如何解决php ajax中文乱码问题

如何解决php ajax中文乱码问题:php ajax中文乱码的解决办法:1、所有数据统一使用utf-8编码,包括从数据库编码,php编码和前端编码;2、使用arrayRecursive方法,对每个字符分别编码即可。推荐:《PHP视频教程》php使用ajax中文乱码问题在php中,从数据库提取数据之后,一般我们会一次提取
推荐度:
标签: 乱码 中文 php
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top