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

ajax页面乱码与get post乱码的解决
之前做ASP页面各种乱码,页面刷新就乱码或者链接就乱码,昨晚去问了下度娘,总结出一个解决办,在所有ASP页面之前加上 <% @ CODEPAGE = "65001" LANGUAGE = "VBSCRIPT" %> <% Response.CODEPAGE = 65001%> ,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处理页面加上 <% Response.Charset = "UTF-8"%> 结果页面显示不出内容 自己研究了下估计是数据库教程的数据编码问题,因为ACCESS数据编码是根据你写进去数据时的编码我写进去的时候是GB2312现在用UTF-8格式的编码解码肯定会乱码 怎么办呢 把<% Response.Charset = "GB2312" %> 然后AJAX中文就返回正常了 . 这里讲下 Charset属性在W3C的解释是 向页面的Response对象中content-type 头部追加字符集名称。

  添加 <% Response.Charset = "GB2312"%>

  页面输出显示

  <%content-type:text/html; charset=GB2312%>

我估计是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"]));

 

时间: 2025-01-26 07:00:36

ajax页面乱码与get post乱码的解决的相关文章

解决ajax提交表单时中文乱码的问题

网上搜索结合自己开发过程中遇到的情况,整理一下,以备忘: Ajax表单提交数据出现乱码和解决办法    //要传递的参数   var queryString = "firstName=" + firstName + "&lastName=" + lastName                          + "&birthday=" + birthday;    function   //GET方式提交    doRequ

jquery.ajax的url中传递中文乱码问题的解决方法

 本篇文章主要是对jquery.ajax的url中传递中文乱码问题的解决方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 JQuery   JQuery默认的contentType:application/x-www-form-urlencoded    这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1    ISO8859-1,通常叫做Latin-1.Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符.   JQuery的Ajax根本没有考

ASP.NET页面中去除VIEWSTATE视图状态乱码

首先声明下这篇文章:本文章的发表于2014-10-11日,原作者和版权所有:KoalaAPI(还是本人啦),原链接:http://www.cnblogs.com/KoalaAPI/p/4018727.html(曾被删除!) 保存页的所有视图状态信息和控件状态信息. 作者在早期参与的项目中曾遇到这样的需求:基于SEO技术的开发,当因为时没有接触的MVC框架的 Razor 引擎,所以只能用ASP.NET引擎,如果使用ASP.NET引擎的服务器端控件,那么在ASP.NET页面中就会生成 __Views

jsp中文页面乱码与传参乱码

  页面乱码 这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可 代码如下   <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %> 数据库乱码 这种乱码会使你插入数据库的中文变成乱码,或者读出显

解决Ajax加载JSon数据中文乱码问题

一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { enable: true, url: basePath + '/sysMenu/listSysMenu', autoParam: ["id=parentId"] } SpringMvc中文字符处理: Java代码 <mvc:annotation-driven> <mvc

php web 中文 乱吗-在linux系统中建立文件夹名为中文的如:”爱提问题“,怎么在web前台页面显示呢,一直乱码

问题描述 在linux系统中建立文件夹名为中文的如:"爱提问题",怎么在web前台页面显示呢,一直乱码 php处理函数mb_convert_encoding()和iconv()都不管用__ 解决方案 注意汉字编码,后天,前段编码格式要一致 解决方案二: http://jingyan.baidu.com/article/ab69b270de8b4f2ca7189f1d.html 看看这个 解决方案三: 关键是你拼接产生的文件名要和整个html的编码匹配,否则肯定是乱码 参考:http:/

php页面,mysql数据库转utf-8乱码,utf-8编码问题总结_php实例

示例一: PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题 点击编辑器的菜单:"文件"->"另存为",可以看到当前文件的编码,确保文件编码为:UTF-8,如果是ANSI,需要将编码改成:UTF-8. 3.PHP文件头BOM问题: PHP文件一定不可以有BOM标签,否则,会出现session不能使用的情况,并有类

jsp中文页面乱码与传参乱码问题解决办法

页面乱码 这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可, www.111cn.net  代码如下 复制代码 <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="err.jsp" %> 数据库乱码 这种乱码会使你插

求大神帮忙-eclipse窗口名乱码问题,谁能帮忙解决啊

问题描述 eclipse窗口名乱码问题,谁能帮忙解决啊 解决方案 eclipse解决乱码问题eclipse解决jsp页面乱码问题eclipse解决jsp页面乱码问题 解决方案二: 是汉化失败吗?是安装完后打开一直这样的?用原版 绿色版重装下吧