jQuery中get设置编码依然乱码,但post不乱码。求细节。

问题描述

$.ajax({url : './data.do?action=unregister',dataType : 'json',contentType : "application/x-www-form-urlencoded; charset=UTF-8",timeout : 300000,data : {serviceNames : serviceNames},success : function(data) {jAlert('成功注销服务!', 'message');oTable.fnDraw();},error : function(request, status, error) {BRICK.ajaxError(request, status, error);}})上面代码,用get,设置了编码为UTF-8,依然乱码。$.ajax({url : './data.do?action=unregister',type : "post",dataType : 'json',timeout : 300000,data : {serviceNames : serviceNames},success : function(data) {jAlert('成功注销服务!', 'message');oTable.fnDraw();},error : function(request, status, error) {BRICK.ajaxError(request, status, error);}})上面代码,用post,默认使用UTF-8,没有乱码。请求方法一为何不行? 问题补充:redstarofsleep 写道

解决方案

get是直接在url后面传的,要转码成“%FG%44。。。。”这种形式的。然后后台取到后再转回来。Java里面是:Decoder.decode();Encoder.encode();
解决方案二:
如果是Tomcat,就是那个URIEncoding的问题了。
解决方案三:
浏览器Post方式发送,可以设置struts.i18n.encoding属性为UTF-8,这样Struts会在request.getParameter前自动执行request.setCharacterEncoding ("UTF-8"),以及返回视图前自动执行response.setCharacterEncoding ("UTF-8")。这样服务端就不会获取到乱码。这个属性设置,对于Get请求无效,Get方式的参数不在消息体中,在头部,这部分由Web容器来解析,默认Web容器以ISO-8859-1来编码,该编码不支持中文。对于Get请求参数只能自己转码。
解决方案四:
配置tomcat conf/server.xml<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="30000" maxKeepAliveRequests="1" maxHttpHeaderSize="8192" URIEncoding="UTF-8" enableLookups="false" acceptCount="100" redirectPort="8443"/>看到那个URIEncoding了吗?
解决方案五:
HttpServletRequest request = ServletActionContext.getRequest ();request.setCharacterEncoding("UTF-8")或者response.setCharacterEncoding("UTF-8")

时间: 2024-09-17 12:01:10

jQuery中get设置编码依然乱码,但post不乱码。求细节。的相关文章

JQuery中Ajax的Post提交在IE下中文乱码的解决方法_AJAX相关

引言: 在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,该如何解决呢? 问题的引入: 复制代码 代码如下: var regid = $('#oregion').combobox('getValue'); //var sname = $('#sname').val(); var sname = encodeURI($('#sname').val(),"UTF-8"); if(regid!=""&&regid!='und

JQuery中Ajax的Post提交在IE下中文乱码的解决方法

引言: 在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,该如何解决呢? 问题的引入: 复制代码 代码如下: var regid = $('#oregion').combobox('getValue'); //var sname = $('#sname').val(); var sname = encodeURI($('#sname').val(),"UTF-8"); if(regid!=""&&regid!='und

JQuery中dataGrid设置行的高度示例代码

 dataGrid 设置行的高度在jquery中如何做到,下面有个不错的教程,感兴趣的朋友可以参考下  代码如下: columns:[[  {field:"activitycontent",title:'活动内容',width:fixWidth(0.18),align:"center",halign:"center",  formatter:function(value,rec){  if(value.indexOf("src"

ssh2应用中统一设置成utf-8之后还会出现乱码问题?

问题描述 这里我使用的是struts2.0 Hibernate3.2 spring2.0 mysql5.0的配置,容器选择Tomcat6.0:下面我们使用的是get的方式提交form表单所出现的情况:前台页面使用:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ include file="

jQuery中eq设置radio值实例

定义和用法 :eq() 选择器选取带有指定 index 值的元素. index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1). 经常与其他元素/选择器一起使用,来选择指定的组中特定序号的元素(如上面的例子).  代码如下 复制代码 <p> <label for="">性别:</label> <span>     <em>男</em>     <input type="radio

JQuery中dataGrid设置行的高度示例代码_jquery

复制代码 代码如下: columns:[[ {field:"activitycontent",title:'活动内容',width:fixWidth(0.18),align:"center",halign:"center", formatter:function(value,rec){ if(value.indexOf("src")<0){ if(rec.activitycontent.length>Math.ce

编码-jQuery中的ajax方法获取到json数据中文会乱码

问题描述 jQuery中的ajax方法获取到json数据中文会乱码 接口如下:http://cre.mix.sina.com.cn/api/finance/topstock_display这个接口 默认返回是 gbk的编码 支持 oe=utf-8,但是xtmlhttprequest 返回的数据默认的字符编码是utf-8,后台说用oe=utf转换,求解... 解决方案 首先你这不是json,所以你需要从服务器语言上把数据转换成json再去传到前端:其次,你要把后台脚本改成utf-8编码,不知道你用

过滤器设置编码,中文到达Action类中还是乱码

问题描述 各位好,我试着用Filter来做统一编码,doFilter方法如下:public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,ServletException {System.out.println("---------------------------doFilter");req.setCharacterEncoding("

MySQL中UTF8编码的数据在cmd下乱码

花了一下午,解决MySQL在Windows的cmd下中文乱码的问题. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 mysql> use abc; Database changed mysql> select * from school; +----------+--------------------+-------------------------------------------+ | schoolid | name               | address