java中编码问题导致ajax提交中文乱码

ajax碰到过两问题,一个是时间问题,一个是中文乱码问题。
因为项目都是在谷歌浏览器做的。
所以一直没有发现别的浏览器问题,
测试的时候才发现ie,360 等出现点击ajax所在的方法失效
刚开始一直以为是js不兼容。
调试下发现是前台传值发现乱码,
坑。。
然后 把中文先转码
最后后台再解码
就可以了。。
下面是决解方法
前台
 
url: "/yq1012/Ajax.php?name="+encodeURI(encodeURI(name))

后台
 
name= java.net.URLDecoder.decode(name,"UTF-8");

补充:

1.UrlEncode:将字符串以URL编码,所有的中文参数都会在传输过程中转化为url编码

2.iso-8859-1:是JAVA网络传输使用的标准 字符集    tomcat默认接收的编码级.

3.pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。

4.contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码。

5.页面文件编码与pageEncoding相同,否则会在jsp页面编译成servlet的时候出现乱码,进而导致响应的页面出现乱码

6.
iso-8859-1是JAVA网络传输使用的标准 字符集,而gb2312是标准中文字符集,一般是操作系统使用的文
字编码方式。
因此,当字符在网络中传递时,不管对于这个字符是怎么编码的,java都认为它是iso8859编码,因此按
照iso8859到unicode的转换规则,变成java保存字符的unicode编码,此时如果直接显示该字符时,将出
现乱码,因为它本身并不是iso8859的编码,而是GBK方式,对应unicode码自然也不正确,所以这时需要
做的是先将这个字符码可逆的转化为原先的编码值即GBK值,(转化方法就是通过getBytes(ISO-8859-1)
得到),然后java才将此GBk值的字符,以gbk到unicode的转化规则保存为java默认方式unicode码。

7.
那么我们可以得到一个编码转换的过程
假设:GBK码("你")->URLencode后变成->(?/)->Tomcat自动替你转一次ISO-8859-1->得到( 23 43 68
23 42 68 每一个符号表示为ISO-8859-1中的一个编码)->接收页面--->再转一次为ISO-8859-1的Byte数
组[23,43,68,23,42,68]--->用GBK再转为可读的文字--->(?/"---->转为("你")

时间: 2024-11-18 10:11:05

java中编码问题导致ajax提交中文乱码的相关文章

Asp中使用JQuery的AJAX提交中文乱码解决方法

客户端页:client.html 复制代码 代码如下: <script>     //jquery的post     $.post     (         'server.asp',         {             Act:'DoSubmit',             UserName:escape('脚本之家'),//进行编码            WebSite:'www.jb51.net'         },         function(data)       

JQuery AJAX提交中文乱码的解决方案_jquery

现象如下: 1)在Firefox下,处理页面的编码为gb2312,提交数据没有问题,中文能够正确解析: 2)在IE8下,处理页面的编码为gb2312,提交中文数据出现乱码. 无论是$.post还是$.ajax,抑或$.ajaxSubmit(来自于Form插件),在之前的UTF-8编码的网站都没有出现过任何问题, 看来是由于提交数据的网页的编码格式造成的了.不管怎么样,既然是浏览器之间存在差异,还是从HTTP包来看有什么问题吧. 打开Fiddle,分别用Firefox和IE做一个AJAX提交(以用

ajax返回中文乱码,servlet中的显示乱码,post提交的乱码问题,编码大总结

ajax|servlet|编码|问题|显示|中文|中文乱码 ajax返回中文乱码问题解决使用ajax获取服务器数据返回给客户端,出现中文乱码.在之前的一个ajax应用中指定codepage=936,将所有页面编码都指定为GB2312即可解决.这 次的应用中却无起作用了,经过多次的试验,客服端的编码应该绝对没有问题的.可以判断问题一定出在服务器端.稍微分析一下可知虽然服务器端指定了文件的编 码格式,但对于服务器输出流就成为了怀疑的对象.由于使用MS SQL2000,采用unicode编码,所以返回

java表单提交中文乱码的解决方法_java

本文实例为大家分享了java表单提交中文乱码的解决方法,供大家参考,具体内容如下 主页index.xml <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>servlet演示</title> </head> <body> <h2&

java web-web项目中怎么写代码,才能减少中文乱码的产生

问题描述 web项目中怎么写代码,才能减少中文乱码的产生 近期实习一直在改bug,发现经常会出现中文乱码的问题,请问中文乱码产生的原因有哪些 ,应该怎么做才能避免这些问题,如果发现是中文乱码的问题,解决方法有哪些? 解决方案 你要确定所有用到编码的地方都统一用一种,比如utf8.这样乱码的几率就很少. 解决方案二: 对涉及到编码的地方编码同一即可 解决方案三: 这个是编解码的问题,统一编解码方式.避免这种问题要在写代码时多注意.之所以出现乱码,说明字符串没进行相应的解码,统一提取出一个解码的函数

Ajax传输中文乱码问题的解决办法_AJAX相关

AJAX简介 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. ajax传输中文乱码问题描述: 我是在一个jsp页面有一个保存按钮,点击时会触发saveForm()的js函数,在saveForm()函数里经过校验后,会通过ajax发送数据请求,这样就不用通过提交表单来传输数据了,aj

Ajax传输中文乱码问题的解决办法

AJAX简介 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. ajax传输中文乱码问题描述: 我是在一个jsp页面有一个保存按钮,点击时会触发saveForm()的js函数,在saveForm()函数里经过校验后,会通过ajax发送数据请求,这样就不用通过提交表单来传输数据了,aj

如何解决JQuery ajaxSubmit提交中文乱码

一般人使用是 jQuery(form).ajaxSubmit({ url: "ajaxsub.aspx?abc=test", type: "post", dataType: "json", success: data }); 分析:JQuery的AJAX提交,会将要提交的数据进行编码,使用encodeURIComponent在js中处理数据.因此,无论是 Firefox或者IE,提交的数据都是一致的,都是UTF-8编码后的数据. 查看Header

PHP中使用substr()截取字符串出现中文乱码问题该怎么办_php实例

在PHP程序开发中,经常会执行字符串的截取操作,比如输出信息列表时,标题不宜过长,打印文章摘要时,也要执行一系列的字符串截取操作.遇到这些需求时,我们经常会想到使用substr()方法来实现,substr()对全英文字符串的截取是比较适合的. 但字符串只要出现中文字符,就有可能导致PHP substr中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确,substr()硬生生地将一个中文字符"锯"成两半,造成断开的字符会把其后的..拉