首页 php教程 php手册 ajax页面乱码与get post乱码的解决

ajax页面乱码与get post乱码的解决

Jun 13, 2016 am 09:55 AM
a ajax get post 乱码 解决 页面

ajax页面乱码与get post乱码的解决
之前做ASP页面各种乱码,页面刷新就乱码或者链接就乱码,昨晚去问了下度娘,总结出一个解决办,在所有ASP页面之前加上 ,65001指的是UTF-8编码格式 GB2312是936,原因就是你在进入UTF-8页面的时候 其他程序没有声明Response.CodePage 而是 Session.CodePage立即被赋值了 (65001或936因版本不同赋值不一样),接着进入另一页的时候 另一页的Response.CodePage立即被Session.CodePage赋值 于是如果那个页得@ CODEPAGE = 936 的话 你这个页的 Response.CodePage 被赋值成了 65001肯定会出乱码的 所以 在页面的开头先统一写好编码 。

  然后昨晚后来又碰到一个问题是AJAX返回中文的时候显示乱码而 2个页面的编码都是一样的UTF-8 为毛会出现乱码 查了度娘是说在AJAX处理页面加上 结果页面显示不出内容 自己研究了下估计是数据库教程的数据编码问题,因为ACCESS数据编码是根据你写进去数据时的编码我写进去的时候是GB2312现在用UTF-8格式的编码解码肯定会乱码 怎么办呢 把 然后AJAX中文就返回正常了 . 这里讲下 Charset属性在W3C的解释是 向页面的Response对象中content-type 头部追加字符集名称。

  添加

  页面输出显示

  

我估计是Charset将字符集改成了GB2312所以可以接受GB2312编码的数据所以就不会乱码了


看一下get,post乱码的ajax解决办法

数据出现乱码从程序执行的过程来讲分为两种,一种是发送给后台程序的中文本身就是乱码,因为xmlHTTP沿用的是网页特效的字处理机制,使用UTF-8编码。但是后台页面使用GB2312或者其它类型编码的话,接收到的数据自然就是乱码了。还有一种是接受到数据再返回的时候,出现字符乱码。这也是因为后台页面使用的编码和Javascript编码不同造成的。服务器脚本返回的字符默认会使用服务器编码例如GB2312。服务器发回数据乱码问题是很容易解决的,我们只要在服务器发回数据的页面加上一个定义编码的文件头即可。
  定义文件头信息的时候根据脚本的不同,可以使用以下方式:
  PHP:header("Content-Type:text/html;charset=GB2312"); 
  ASP:Response.Charset("GB2312")
  JSP:response.setHeader("Charset","GB2312");
  (其它脚本可以查找其相关类库,通常都有设置header信息的函数或方法。)
  说完了发回信息,我们在说一下发送信息乱码的问题。其实不关是怎样的编码,我们输入的中文字符都会被正确的以UTF-8格式发送到服务器端,只是在服务器接收的时候没有按照我们预期的方式去解码,而是使用了服务器默认的字符编码方式,通常是GB2312来解码信息。那我们看到的字符自然就是错误的。
  我们都知道,XMLHTTP有两种发送数据的方式,一种是GET,一种是POST。GET的乱码解决起来比较简单。只要加上一个定义编码的Header信息即可:setrequestheader("Content-Type","text/html; encoding=gb2312")。这样GET方式发送出去的数据会被服务器脚本正确的理解为GB2312方式,从而进行解码。
  比较难的部分是使用POST方法发送数据的时候,上面的方法就失效了,因为POST数据使用的Content-type使用的是:xmlObj.setrequestheader("Content-Type","application/x-www-form-urlencoded");没有定义字符编码的地方。我在这个问题的解决上遇到了很大的困难,但是目前已经找到两种比较好的解决方法。首先是将中文字符在发送到服务器端之前进行URL编码。也就是使用:encodeURI()。
  但要注意的是,这个方法要用两次,第一次是将字符加工成URL编码。第二次是将编码后的数据再次编码。这样做是因为,第一次编码如果发送的话,服务器端会自动对其进行解码,如果这样那我们就没有办法来控制我们希望的解码方式了。所以要进行两次encodeURL。这样做的目的在于,我们在服务器端获得的数据是一个被encodeURL后的字符串。然后我们再用服务器端脚本的相应解码函数来还原字符串,如此一来,我们就得到了一个我们希望得到的正确的字符串了。这样做的坏处是,我们不得不成倍的增加Send出去的数据量。要知道,数据量变大,出错的机会也就随之变大。
  还有一种方式是使用cookies转储数据,这样虽然不会增加数据但是对于浏览器权限有一定要求。虽然读写cookie是很容易得事情。但我觉得这样操作并不理想。在我没有进行试验的情况下我也不好多说什么。而我认为,应该还有第三种方法可以解决乱码的问题。

  AJAX POST 乱码在 PHP 中的解决方法!
  虽然不高级,也不帅,但最终还是解决了问题。而问题的解决,正式因为PHP完善的函数库!只是一个 iconv() 函数就解决了乱码的问题!
  在客户端,不需要任何的设置。只要将正常的值获取并使用xmlHTTP Send到服务器端,然后在服务器端正常接受值。在接收到值之后使用iconv()函数将字符串重新编码一下就好了!
$R_Guest = strval(iconv("UTF-8","GB2312",$_POST["R_Guest"]));
$R_Content = strval(iconv("UTF-8","GB2312",$_POST["R_Content"]));

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系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.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 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)

五招教你解决黑鲨手机开不了机的问题! 五招教你解决黑鲨手机开不了机的问题! Mar 24, 2024 pm 12:27 PM

随着智能手机技术的不断发展,手机在我们日常生活中扮演着越来越重要的角色。而作为一款专注于游戏性能的旗舰手机,黑鲨手机备受玩家青睐。然而,有时候我们也会面临到黑鲨手机开不了机的情况,这时候我们就需要采取一些措施来解决这一问题。接下来,就让我们来分享五招教你解决黑鲨手机开不了机的问题:第一招:检查电池电量首先,确保你的黑鲨手机有足够的电量。可能是因为手机电量耗尽

小红书发布自动保存图片怎么解决?发布自动保存图片在哪里? 小红书发布自动保存图片怎么解决?发布自动保存图片在哪里? Mar 22, 2024 am 08:06 AM

随着社交媒体的不断发展,小红书已经成为越来越多年轻人分享生活、发现美好事物的平台。许多用户在发布图片时遇到了自动保存的问题,这让他们感到十分困扰。那么,如何解决这个问题呢?一、小红书发布自动保存图片怎么解决?1.清除缓存首先,我们可以尝试清除小红书的缓存数据。步骤如下:(1)打开小红书,点击右下角的“我的”按钮;(2)在个人中心页面,找到“设置”并点击;(3)向下滚动,找到“清除缓存”选项,点击确认。清除缓存后,重新进入小红书,尝试发布图片看是否解决了自动保存的问题。2.更新小红书版本确保你的小

无法在此设备上加载驱动程序怎么解决?(亲测有效) 无法在此设备上加载驱动程序怎么解决?(亲测有效) Mar 14, 2024 pm 09:00 PM

  大家都知道,如果电脑无法加载驱动程序,该设备可能就无法正常工作或与计算机进行正确的交互。那在电脑上弹出无法在此设备上加载驱动程序的提示框,我们要如何解决呢?下面小编就教大家两招轻松解决问题。  无法在此设备上加载驱动程序解决方法  1、开始菜单搜索“内核隔离”。  2、将内存完整性关闭,上方提示“内存完整性已关闭。你的设备可能易受攻击。”点击后方忽略即可,不会对使用有影响。  3.重启机器之后即可解决问题。

Oracle导入中文数据时出现乱码怎么解决? Oracle导入中文数据时出现乱码怎么解决? Mar 10, 2024 am 09:54 AM

标题:解决Oracle导入中文数据乱码问题的方法及代码示例在Oracle数据库中导入中文数据时,经常会出现乱码的情况,这可能是由于数据库字符集设置不正确或者导入过程中出现编码转换问题所致。为了解决这个问题,我们可以采取一些方法来保证导入的中文数据能够正确显示。下面是一些解决方案及具体的代码示例:一、检查数据库字符集设置在Oracle数据库中,字符集的设置对于

处理Laravel页面无法正确显示CSS的方法 处理Laravel页面无法正确显示CSS的方法 Mar 10, 2024 am 11:33 AM

《处理Laravel页面无法正确显示CSS的方法,需要具体代码示例》在使用Laravel框架开发Web应用时,有时候会遇到页面无法正确显示CSS样式的问题,这可能会导致页面呈现不正常的样式,影响用户体验。本文将介绍一些处理Laravel页面无法正确显示CSS的方法,并提供具体的代码示例,帮助开发者解决这一常见问题。一、检查文件路径首先要检查CSS文件的路径是

3秒跳转页面实现方法:PHP编程指南 3秒跳转页面实现方法:PHP编程指南 Mar 25, 2024 am 10:42 AM

标题:3秒跳转页面实现方法:PHP编程指南在网页开发中,页面跳转是常见的操作,一般情况下我们使用HTML中的meta标签或者JavaScript的方法进行页面跳转。不过,在某些特定的情况下,我们需要在服务器端进行页面跳转。本文将介绍如何使用PHP编程实现一个在3秒内自动跳转到指定页面的功能,同时会给出具体的代码示例。PHP实现页面跳转的基本原理PHP是一种在

Linux终端乱码问题的处理方法 Linux终端乱码问题的处理方法 Mar 20, 2024 pm 03:12 PM

Linux终端乱码问题的处理方法在使用Linux系统时,有时候在终端中显示的文字会出现乱码,这给我们使用终端带来了不便,需要及时处理。本文将为大家介绍一些常见的Linux终端乱码问题的处理方法,同时提供具体的代码示例。问题一:终端中文乱码终端中文乱码通常是由于终端的字符编码设置不正确导致的。我们可以通过修改终端的字符编码设置来解决这个问题。#查看当前终端的

如何解决Laravel无法加载CSS样式的情况 如何解决Laravel无法加载CSS样式的情况 Mar 10, 2024 am 09:12 AM

标题:如何解决Laravel无法加载CSS样式的情况在使用Laravel进行Web开发的过程中,有时候会遇到CSS样式无法加载的情况,这可能会导致页面显示效果不正常。本文将介绍一些常见的原因以及解决方法,同时提供具体的代码示例供大家参考。1.检查CSS文件路径是否正确首先要确保CSS文件路径是正确的,通常在Laravel项目中,CSS文件会放在public

See all articles