php ajax提交中文乱码怎么办
时间:2021-05-20
来源:互联网
今天PHP爱好者为您带来php ajax提交中文乱码的解决办法:1、将所有数据统一使用utf-8编码,包括从数据库编码,php编码和前端编码;2、使用“JSON”和“arrayRecursive”两个函数,对每个字符分别编码。希望对大家有所帮助。
本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。
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爱好者其它相关文章!
-
双影奇境药剂大师任务怎么做(详解) 时间:2025-05-02
-
崩铁黄金替罪羊3.1任务指南 崩坏星穹铁道黄金替罪羊通关攻略大全 时间:2025-05-02
-
贝莱德比特币etf 时间:2025-05-02
-
女寝皆是修罗场意外剧情通关技巧-意外剧情触发 时间:2025-05-02
-
七日世界移动端要什么配置-七日世界手游硬件要求 时间:2025-05-02
-
女寝皆是修罗场秦笙怎么-秦笙教授教程 时间:2025-05-02
今日更新
-
微信享机惠是什么东西
阅读:18
-
cmd运行exe文件命令是什么
阅读:18
-
浅谈Bootstrap3和Bootstrap4的差异
阅读:18
-
MySQL如何使用ESCAPE关键字
阅读:18
-
怎么把微信推送给另一个人
阅读:18
-
vscode中如何断点调试nodejs
阅读:18
-
php图片增加水印的方法
阅读:18
-
php怎么替换数组里的字符
阅读:18
-
学会这20+个JavaScript单行代码,让你像专业人士一样编写代码
阅读:18
-
2020ipad可以分屏吗
阅读:18