首页 后端开发 PHP问题 如何解决ajax传到后台php中文乱码问题

如何解决ajax传到后台php中文乱码问题

Dec 27, 2021 am 09:10 AM
ajax php

ajax传到后台php中文乱码的解决办法:1、设置“iconv('utf-8','gb2312',$_POST['Data']);”;2、通过arrayRecursive以及JSON方法解决编码问题即可。

如何解决ajax传到后台php中文乱码问题

本文操作环境:Windows7系统,PHP7.1版,Dell G3电脑。

如何解决ajax传到后台php中文乱码问题?

PHP中AJAX应用中文乱码解决方法

web应用开发中经常出现中文乱码情况!

今天主要整理下思路:

出现乱码的大多数情况是我们进行AJAX时所遇到的!因为直接数据库读取是不会有任何编码上的问题的~

 

1.从前台JS提交数据到后台的情况下

AJAX数据时,不管是直接用底层xmlHttprequest还是用jQuery的ajax进行数据传递时!ajax都会使用utf-8进行编码后发送!

如果我们的页面是UTF-8那没有问题!传递过去的中文数据不会乱码!

如果是GB2312的话~问题就来了!GBK被UTF-8转换后发送到后台,这时后台直接接收到的已经乱码了!

(解决方法:后台语言为PHP的情况下,iconv('utf-8','gb2312',$_POST['Data']);)

原理很简单:后台直接接收是utf-8,而页面都是GBK,那只要把接收到的数据再重新转回为GBK就可以了!

这时再做数据库操作就可以了!存入数据库里的必定是正常的中文字符了!

 

2.后台页面读取到数据库里数据中含有中文字符,此时再回传到JS前台的情况下

PHP页面从数据库里读取到了正常的中文字符想通过AJAX再回传回去~

如果传递回去只是把数据不作任何处理直接以字符串的形式传回去!这是没有问题的!中文在前台页面上显示一切正常!

但后台数据我们一般是需要包装一下!不然前台接收到的数据会很难处理!

如果是PHP的话!那么我们现在一般用JSON进行传递!这样传递到前台JS的数据就会非常容易解开并操作!

在PHP后台进行json转换操作时,问题就来了!

json转换时会发现从数据库读取出来的中文又出现NULL或其它不正常的情况,这是因为JSON只转义encoding编码!咱也甭管他转义什么编码!

反正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--;
 }
 function JSON($array) {
     arrayRecursive($array, 'urlencode', true);
     $json = json_encode($array);
     return urldecode($json);
 }
$json_string=JSON($data);
//$obj = json_decode($json_string);
print_r($json_string);
登录后复制

 

经过这些处理后你会发现后台PHP从数据库读出来的中文字符成功的转成了json格式并且中文显示一切正常!

当然此时前台接收到的数据就是JSON格式的了并且中文字符也是正常!

 

好了~~就是这些思路~网上方法有很多!看得有点乱~主要是记住思路!

然后就看用什么函数用什么方法解决相关编码问题就可以了!

比较烦那种JS前台AJAX需要转码!后台再解码!有的还需要转两次!

目前我写的这些都是在PHP后台语言代码的情况下有效的.

前台即使是GBK也不用作任何转码操作,全部只在后台PHP代码里面作相关转换就可以了!!

推荐学习:《PHP视频教程

以上是如何解决ajax传到后台php中文乱码问题的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 使用数据库 CakePHP 使用数据库 Sep 10, 2024 pm 05:25 PM

在 CakePHP 中使用数据库非常容易。本章我们将了解CRUD(创建、读取、更新、删除)操作。

CakePHP 日期和时间 CakePHP 日期和时间 Sep 10, 2024 pm 05:27 PM

为了在 cakephp4 中处理日期和时间,我们将使用可用的 FrozenTime 类。

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

为了进行文件上传,我们将使用表单助手。这是文件上传的示例。

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

在本章中,我们将学习以下与路由相关的主题?

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

CakePHP 创建验证器 CakePHP 创建验证器 Sep 10, 2024 pm 05:26 PM

可以通过在控制器中添加以下两行来创建验证器。

CakePHP 日志记录 CakePHP 日志记录 Sep 10, 2024 pm 05:26 PM

登录 CakePHP 是一项非常简单的任务。您只需使用一项功能即可。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。提供了 log() 函数

See all articles