java get乱码问题_JAVA GET 根除请求乱码问题

本文介绍了解决使用Ajax向Java应用发送中文参数时出现乱码的方法。通过调整Tomcat配置,如设置useBodyEncodingForURI和URIEncoding参数为UTF-8,可以有效解决GET和POST请求中的中文乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

页面为UTF-8,jQuery的ajax方法为utf-8传值,中文会出现乱码,给Java页面传值时需要进行两次转码encodeURI();

例如:

$.post("page.do",{str:encodeURI(encodeURI("中文"))},function(data){alert(data);})

程序页面解析字符串时需要使用ava.NET.URLDecoder.decode进行解码

例如:

String str= java.Net.URLDecoder.decode(ServletActionContext.getRequest().getParameter("str"), "UTF-8");

以上是治标不治本,需要根除的话,需要修改TOMCAT的默认编码。

我们通过 post 方法提交的参数实际上都是通过 uri 提交的,都由这个参数管理,如果没有设定这个参数,则 tomcat 将使用默认的 iso8859-1 对客户端的内容进行编码。

useBodyEncodingForURI 使用与 Body 一样的编码来处理 URI, 这个设定是为了与 tomcat4保持兼容。在 tomcat5 中,对post 的处理通过 前面的 URIEncoding 进行处理,对get 的内容依然通过 request.setCharacterEncoding 处理,为了保持兼容,就有了这个设定。

将 useBodyEncodingForURI 设定为真后,就可以通过 request.setCharacterEncoding 直接解决 get 和 post 中的乱码问题。

这样,我们可以通过在 server.xml 中设定 URIEncoding 来解决 get 方法中的参数问题,使用过滤器来解决 post 方法中的问题。

或者也可以通过在 server.xml 中设定 useBodyEncodingForURI 为 true ,配合过滤器来解决编码的问题。

在这里,我强烈建议在网站的创作过程中,全程使用 utf-8 编码来彻底解决乱码问题。

在TOMCAT中的server.xml中的

Connector中添加两个设置useBodyEncodingForURI="true" //设置POST和GET使用相同编码

URIEncoding="UTF-8" //对URI使用utf-8编码处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值