如何解决php ajax乱码问题

php ajax乱码的解决办法:1、将所有数据统一使用utf-8编码;2、使用“JSON”和“arrayRecursive”两个函数,对每个字符分别编码。

如何解决php ajax乱码问题

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

php使用ajax中文乱码问题

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

我们看一下如何转换,

立即学习“PHP免费学习笔记(深入)”;

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":"u4e2du56fd","b":"u65e5u672c","c":"u7f8eu56fd","d":"u52a0u62ffu5927","e":"u6cd5u56fd"}

登录后复制

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

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

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

登录后复制

输出结果如下:

[{"a":"u4e2du56fd","b":"u65e5u672c","c":"u7f8eu56fd","d":"u52a0u62ffu5927","e":"u6cd5u56fd"},{"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视频教程》

以上就是如何解决php ajax乱码问题的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2513570.html

(0)
上一篇 2025年3月5日 15:13:16
下一篇 2025年2月28日 13:31:47

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php怎么删除末尾字符

    php删除末尾字符的方法:1、使用“substr($arr_str,0,strlen($arr_str)-1);”方式删除;2、通过“substr($arr_str, 0, -1)方式删除;3、通过“rtrim”方法删除。 本文操作环境:w…

    2025年3月5日
    200
  • php如何查询返回记录数

    方法:1、使用mysql_num_rows函数,语法“mysql_num_rows(结果集)”;2、使用mysql_query函数执行“COUNT(*)”查询,再使用mysql_fetch_row函数从结果集中取出数字数组。 本教程操作环境…

    2025年3月5日
    200
  • php数组键值如何转小写

    php中,可以使用array_change_key_case函数将数组键值转小写,语法格式为“array_change_key_case(数组, CASE_LOWER)”。当值为CASE_LOWER时,将数组的键转换为小写字母。 本教程操作…

    2025年3月5日
    200
  • php中swfupload乱码怎么办

    解决方法:1、使用“名称(fileName.getBytes(“UTF-8″),”GBK”)”语句转换编码类型;2、配置“web.config”文件,将文件中的编码类型改为“utf-8”即可。…

    2025年3月5日
    200
  • php怎么将图片转成base64

    php将图片转成base64的方法:首先创建一个PHP示例文件;然后通过“function base64EncodeImage ($image_file) {…}”方法将图片转成base64即可。 本文操作环境:windows7…

    2025年3月5日
    200
  • 靠边站,单项分支结构来了(附源码)

    上篇文章给大家介绍了《对php7的了解(附详细教程)》,本文继续给大家介绍流程控制以及分支结构——单项分支结构,话不多说,一起看看吧!!! 1.什么是流程控制? 对程序代码执行流程的控制叫做流程控制; 2.什么是流程? 程序执行的顺序就是流…

    2025年3月5日
    200
  • php怎么清除数组中的空值元素

    php清除数组中空值元素的方法:1、利用foreach或者while语法结构遍历数组,一个个判断删除数组中的空值元素;2、使用array_filter()函数,利用回调函数过滤数组元素,如果没有回调函数,那么默认就是删除数组中空值。 本教程…

    2025年3月5日
    200
  • php如何获取具体日期

    本篇文章给大家介绍一下php获取具体日期的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 本周星期一 // 本周一,w为星期几的数字形式,这里0为周日。$dt = date(‘Y-m-d’, (time() – ((…

    2025年3月5日
    200
  • php中unset()的用法是什么

    在php中,unset()函数主要用于销毁给定的变量,语法“unset (要销毁的变量)”,没有返回值。如果在函数中unset()一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用unset()之前一样的值。 本教程操作环境…

    2025年3月5日
    200
  • 如何使用PHP中的层次性能分析器

    本篇文章给大家简单介绍一下php中的层次性能分析器。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 在 PHP 中,我们需要进行调试的时候,一般都会使用 memory_get_usage() 看下内存的使用情况。但如果想看…

    2025年3月5日
    200

发表回复

登录后才能评论