很急 jquery ajax 传参 后台接收的都是乱码

sjw8072336 2010-08-27 10:32:20
前台代码

$.ajax({
url:'/test/test.do',
type:"POST",
data:"test="+test, //test是中文字符
error: function(msg){
alert('Error loading XML document'+msg);
},
success: function(data)
{
alert(data);
}
})

后台代码test.java

public class UsbkeyWriteCheckUsbkeyInfo extends Action {
······
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

HttpSession session=request.getSession();

UsbkeyForm usbkeyForm = (UsbkeyForm)form;
System.out.println(usbkeyForm.getJgdm());



String test= request.getParameter("test");

String responseText="1";
PrintWriter out=response.getWriter();
out.println(responseText);
return super.execute(mapping, form, request, response);
}



}

我后台获取的test是乱码 请问这个是什么情况 小弟没有搞JAVA请大牛帮帮忙
...全文
1444 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
political 2010-08-27
  • 打赏
  • 举报
回复
顶 来解决啊。楼主你的问题解决了吗。
political 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 y296037813 的回复:]
可以自己写一个过滤器,把页面上内容全都设置为UTF-8
[/Quote]过滤器是什么,怎么用,怎么写?
y296037813 2010-08-27
  • 打赏
  • 举报
回复
可以自己写一个过滤器,把页面上内容全都设置为UTF-8
political 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dyllove98 的回复:]
jquery 编码是utf-8的 而且不能更改...
所以如果后台编码不是utf-8的话就不要使用jquery发ajax了,


encodeURIComponent(encodeURIComponent(test)) 这是是把汉字转化成 //2345这种形式来传递

这样处理可以解决乱码的问题 但是好像要处理特殊字符才能,不然后特殊字符会出问题
[/Quote] 那把后台的编码改成utf-8 可以吗,可以使用Jquery了吗?
lnner 2010-08-27
  • 打赏
  • 举报
回复
支持一楼!看看不同版本的IE是否都有乱码?
Jlins 2010-08-27
  • 打赏
  • 举报
回复
jquery 编码是utf-8的 而且不能更改...
所以如果后台编码不是utf-8的话就不要使用jquery发ajax了,


encodeURIComponent(encodeURIComponent(test)) 这是是把汉字转化成 //2345这种形式来传递

这样处理可以解决乱码的问题 但是好像要处理特殊字符才能,不然后特殊字符会出问题
political 2010-08-27
  • 打赏
  • 举报
回复
帮你顶起来,我也遇到乱码的问题,现在这编码真坑人,让我这个初学者很头疼。大侠们快来帮忙啊。我的jsp 页面gb2312,java是gbk的,现在debug时,看到前台输入进去的汉字全是乱码,传到数据库也一定是乱码。这说明,是后台程序的问题,该怎么转换呢。最好是一个方法可以将一个类中所有的字符串全部转换一下,我知道有单个变量转换的。求大家帮忙 。借用你的贴子,发一下我的错误,顺便也帮你拉拉人气。
if (selectstr1 != null && !"".equals(selectstr1)) {
String regEx = "[\\u4e00-\\u9fa5]";
java.util.regex.Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(selectstr1);
if (!m.find()) {
try {
selectstr1 = new String(selectstr1.getBytes("iso8859-1"),
"gb2312");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是一个转换的例子你看你能用到吗,我用这样的方法去掉了selectstr1变量的乱码。正常查出结果 了。
Cike121272604 2010-08-27
  • 打赏
  • 举报
回复
既然是乱码,说明参数传过来了,但编码方式有问题,修改一下就行了,不是什么大问题。
Inhibitory 2010-08-27
  • 打赏
  • 举报
回复
Strut2 + MySql + Hibernate + ajax(jQuery)中文乱码解决办法:
1. 网页页面使用utf-8
<meta http-equiv="Content-type" content="text/html; charset=utf-8">

2. ajax默认使用utf-8传输数据, 但最好使用post, 不要使用get

3. Struts2中使用UTF-8.
3.1 在struts.properties中加上: struts.i18n.encoding=UTF-8
[3.2 使用Filter: 从页面中传输数据到Struts2, 需要使用过滤器把数据在交给struts2前转换成utf-8的: http://stevieliu.blogchina.com/stevieliu/6223098.html]
试过不使用3.2照常可以收到中文.

4. 数据库也要使用utf-8, 在建表时设置好.
http://imysql.cn/charset_tips

5. hibernate.cf.xml配置文件中与数据库的连接符串也要标明使用的编码为utf-8: <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mlm?useUnicode=true&characterEncoding=UTF-8</property>
mxx123 2010-08-27
  • 打赏
  • 举报
回复
没有设置好编码
一克代码 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gxm0751129 的回复:]
我和你碰到过一样的情况,是网上查的方法。
我的jsp页面编码为gb2312,ajax传参数时这么传encodeURIComponent(encodeURIComponent(test))
action对收到的数据这么处理:
URLDecoder.decode(URLDecoder.decode(test,"utf-8"), "gb2312");
可以取消乱码,具体原理也不是很清楚,只知道j……
[/Quote]

乱码就要找编码方式!

java默认的就是gb2312

舞黯然 2010-08-27
  • 打赏
  • 举报
回复
我和你碰到过一样的情况,是网上查的方法。
我的jsp页面编码为gb2312,ajax传参数时这么传encodeURIComponent(encodeURIComponent(test))
action对收到的数据这么处理:
URLDecoder.decode(URLDecoder.decode(test,"utf-8"), "gb2312");
可以取消乱码,具体原理也不是很清楚,只知道jquery默认的编码是utf-8的
sjw8072336 2010-08-27
  • 打赏
  • 举报
回复
谢谢了 大家
a5867320 2010-08-27
  • 打赏
  • 举报
回复
request.setCharacterEncoding("UTF-8");不好意思
  • 打赏
  • 举报
回复
有可能是字节流和字符流相互处理转换的时候出了问题,以前我也遇到编码问题。
  • 打赏
  • 举报
回复
有可能是字节流和字符流相互处理转换的时候出了问题,以前我也遇到编码问题。
a5867320 2010-08-27
  • 打赏
  • 举报
回复
LZ,你试试把 type: "post" 改成 type: "Get" 看能否解决乱码问题,如果不行再在Action中加入:
request.CharacterEncoding("UTF-8");如果能解决问题的话,换回POST,在Action中相应的加入如下代码:

String test = request.getParameter("test");
//Action收到请求参数默认是以老外的ISO8859-1来解码的
test = new String(test.getBytes("ISO8859-1"),"UTF-8");
就可以解决乱码了。
当然设置一个全局的中文乱码过滤器是最好的选择,4楼的filter似乎还有不妥之处就是POST请求乱码是如何解决的?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧