AJAX from提交出现乱码 各种解决方案

来源:互联网 发布:unity3d 室内漫游 编辑:程序博客网 时间:2024/06/05 18:57

小弟最近在做一个移动端的项目 用到了AJAX 在网上各种查资料 但是好像还是没有找到,最后 请教了下我们这的架构师,知道问题的所在
不说那些 我们先说几个问题,因为我的项目所有的都是GBK编码方式
但是ajax通过浏览器指定的编码都是UTF-8的

所有浏览器都是UTF-8编码方式的

如果我们的AJAX是get请求的可以加入两次encodeURL进行转码
这个是在前端 js中做的操作 一定要两次 因为 tomCat会进行一次解码
我们也会进行一次解码
encodeURI(encodeURI(orgName));

java代码中写:
URLDecoder.decode(参数, “utf-8”);

将转换的参数进行解码,这个样子 在get方式的ajax请求不会出现乱码

但是上次小弟用的是POST请求方式 还傻乎乎的用了get方式的转码方式 因为 get方式的转码方式是吧参数附加到 地址后面的所以为什么是URLDecoder这个只能适用于get请求方式。

好post请求方式 其实只要设置一个
request.setCharacterEncoding(“utf-8”); 就可以了 但是这个不能写到控制器上也就是我们直接请求的方式中去设置,要写一个过滤器
下面是我的AJAX请求的URL:
url:”addCustomerInfo.do?_input_charset=UTF-8”,
因为我附加了一个参数input_charset=UTF-8”, 所以会找到对应的拦截器
而这个拦截器只有一个方法:
request.setCharacterEncoding(“utf-8”);
这个样子在进入方式的时候就告诉我们的服务器使用UTF-8的解析方式
最后读到我们的后台,就变成了不会乱码的字符串了,乱码的地方只有读和写,所以就算我的文件都是GBK编码也可以正常使用UTF-8编码转换的字符。

form请求乱码解决:
<%@ page language=”java” import=”java.util.*”
contentType=”text/html; charset=GBK” pageEncoding=”GBK”%>

只需要在jsp第一行加上这个就好了 请记住 你的jsp的编码一定要和 pageEncoding保持一致, contentType=”text/html; charset=GBK”
这个参数是告诉浏览器发送数据的字符集,pageEncoding告诉tomcat用什么字符编码解析 我们的jsp只要 文件本身的编码和这两个参数保持一致 应该不会出现乱码,

还有就是以前 博主一直认为所谓的字符集过滤器 是将某一个字符编码的数据转换到另外一种我们需要的字符编码集,可是后来大哥告诉我,不是那个样子的 所谓的过滤器只是告诉服务器用什么方式去解析请求过来的数据 ,所以说浏览器发送的数据一定要和我服务器解析使用的编码集保持一致才行哦

以上是我花了1天时间也没解决的。

1 0
原创粉丝点击