页面编码为GBK时 jquery 提交ajax数据完美解决"中文乱码"方案
2011-03-06 23:18
841 查看
jquery在发送ajax数据时,使用了js的内置方法encodeURIComponent对数据进行了处理,该方法的作用是把数据以UTF-8的方式编码,所以页面的编码方式无论是GBK、UTF-8等,在服务器端获取数据前使用request.setCharacterEncoding("UTF-8"),就可以获取到正常的中文字符了;但是,在实际项目中这个简单的方案并不能解决所有情况。
我们做如下处理:
1.在使用jquery的 jQuery.ajax() 方法时,在参数中增加一个设置{contentType : "application/x-www-form-urlencoded; charset=utf-8"},这时在服务器端使用方法request.getCharacterEncoding()(PS:这时以java代码为例)就可以获取到编码格式为UTF-8,所以不需要进行任何处理就可以获取到正常的中文字符。
2.以POST方式提交表单时,request.getCharacterEncoding()获取到的编码格式为null,这时就要根据项目的编码方式进行解码了。
还可以把这部分代码写在过滤器中:
package com.lianzt.filter;
public class EncodingFilter implements Filter {
private String encoding = null;
public EncodingFilter() {
}
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
if (request.getCharacterEncoding() == null) {
request.setCharacterEncoding(encoding);
}
response.setContentType("text/html;charset=" + encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
}
在web.xml中加上以下代码:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.lianzt.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样在servlet就可以获取到正常的表单数据了,前提是在调用jQuery.ajax()时,要加上{contentType : "application/x-www-form-urlencoded; charset=utf-8"}参数,可以把这个参数使用jQuery.ajaxSetup()方法设置为全局ajax参数,不需要每次ajax请求都加上。
我们做如下处理:
1.在使用jquery的 jQuery.ajax() 方法时,在参数中增加一个设置{contentType : "application/x-www-form-urlencoded; charset=utf-8"},这时在服务器端使用方法request.getCharacterEncoding()(PS:这时以java代码为例)就可以获取到编码格式为UTF-8,所以不需要进行任何处理就可以获取到正常的中文字符。
2.以POST方式提交表单时,request.getCharacterEncoding()获取到的编码格式为null,这时就要根据项目的编码方式进行解码了。
还可以把这部分代码写在过滤器中:
package com.lianzt.filter;
public class EncodingFilter implements Filter {
private String encoding = null;
public EncodingFilter() {
}
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
if (request.getCharacterEncoding() == null) {
request.setCharacterEncoding(encoding);
}
response.setContentType("text/html;charset=" + encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
}
在web.xml中加上以下代码:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.lianzt.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样在servlet就可以获取到正常的表单数据了,前提是在调用jQuery.ajax()时,要加上{contentType : "application/x-www-form-urlencoded; charset=utf-8"}参数,可以把这个参数使用jQuery.ajaxSetup()方法设置为全局ajax参数,不需要每次ajax请求都加上。
相关文章推荐
- 页面编码为GBK时 jquery 提交ajax数据完美解决"中文乱码"方案
- 页面编码为GBK时 jquery 提交ajax数据完美解决中文乱码方案
- 页面编码为GBK时_jquery_提交ajax数据完美解决中文乱码方案
- jquery中ajax方法提交数据时,中文乱码问题解决。
- jquery ajax 解决中文乱码问题
- 让Gradle支持中文 - 关于 "编码 GBK 的不可映射字符"异常的解决
- gbk页面ajax表单提交中文乱码的问题
- JSP 表单输入,UTF编码,get方式提交数据出现中文乱码解决方法
- jQuery-Ajax提交数据中文乱码问题的解决方案
- utf-8编码的页面向GBK编码的页面提交中文表单乱码终极解决方案
- 关于使用Ajax传中文数据到后台接受乱码问题 data:{"dictype":"客户信誉度"}
- ajax post 提交数据到服务端时中文乱码解决方法
- firefox对ajax的URL中文编码产生乱码完美解决
- Jquery的ajax在IE提交数据乱码解决方法
- [转]结合PHP实例谈谈如何解决jQuery.ajax提交GB2312或GBK编码中文乱码问题
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- 织梦gbk版本中ajax提交自定义表单中文乱码问题解决方法
- 解决前台jsp页面提交中文数据以后,数据库中乱码问题??
- jquery $("#form").serialize()传中文乱码解决方法
- AJAX在GBK编码页面中传中文参数乱码的问题