Java URL传参中文乱码问题

我们经常会遇到这样的场景:在URL中传递参数,如果该参数为中文,如果设置不当,会出现乱码问题。

URL传参所使用的编码为服务器中设置的编码,而ajax请求的编码为页面编码。

如果不设置tomcat的默认编码为ISO-8859-1,而如果在设置中加入 useBodyEncodingForURI="true"

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" 
protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>

那么url中参数的编码就与页面编码一致。

如果页面编码为UTF-8,java后台编码为UTF-8,那么后台得到的参数就不会出现乱码问题。

如果不设置useBodyEncodingForURI="true",那么需要在java后台中,将ISO-8858-1编码的中文转换为UTF-8格式的。

new String(search_name.getBytes("ISO-8859-1"),"UTF-8");

上述方法虽然能解决URL传参中文乱码问题,但是依赖于Tomcat服务器配置,需要不同的业务逻辑进行处理,这样的话,同一个war包,部署到不同的服务器上会出现问题。

因此,尽量用ajax来传递中文参数。

时间: 2024-10-06 00:07:42

Java URL传参中文乱码问题的相关文章

关于url传参中文乱码问题

之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题.所以一直没有了解中文乱码的问题. 问题描述: 地址: http://localhost:8080/sun-government/contest/get_teams_by_type_with_page?typeName=新材料 当在windows 跑 myeclipse的命令台  能正确打印出typeName的参数,而且持久层并没有问题. 当在 linux 跑catalina模式  打印出乱码,持久层也是乱码. 百度了好几个好几

get请求中url传参中文乱码问题--集锦

一:get请求url中带有中文参数,有三种方式进行处理防止中文乱码 1.如果使用tomcat作为服务器,那么修改tomcat配置文件conf/server.xml中,在  <Connector port="8082" protocol="HTTP/1.1"  中加入  URIEncoding="utf-8"的编码集 2.前台需要对中文参数进行编码,调用js方法encodeURI(url),将url编码,然后请求. 后台接受时,需处理Stri

asp.net 页面通过URL传参中文乱码的三种解决方案

1.编码 string state=Server.UrlEncode(stateName.Text.Trim());Response.Redirect("aaa.aspx?state="+state+""); 2.解码(aaa.aspx) string state= Server.UrlDecode(Request.QueryString["state"].ToString()); 是GB2312编码的,参数传值是UTF-8编码的 解决的方法一般

URL传参中文乱码、点链接弹出子窗口

方法一: String ssdwhbm = new String(getRequest().getParameter("ssdwhbm").getBytes("iso8859-1"),"utf-8"); 方法二: <a href="javaScript:void(0)" onclick="paixu('${l.ssdwhbm}')" >排序</a> <script type=&

页面传参中文乱码解决方案

jsp页面传递参数到servlet,只要参数有中文就是乱码,大多数是??????乱码,尝试了网上比较普遍的好多种办法都不行,最后加了一句话解决掉,分享给大家. 1.打开tomcat安装目录 2.找到conf文件夹 3.打开里面的server.xml 4.找到 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443

【WEB】jsp向servlet传参中文乱码问题解决

传参方式:POST.GET.link方式 servlet向jsp传中文参数msg 1 if(username.equals("") || password.euqals("")){ 2 msg = "用户名密码不能为空"; 3 String encodeMsg = java.net.URLEncoder.encode(msg, "GBK"); // URLEncoder参数进行转码,地址栏参数为16进制码 4 String u

window.location.href传参中文乱码问题

window.location.href="${pageContext.request.contextPath}/story/exportStoryInfo?domainId="+domainIds                                                +"&requirementName="+requirementName; 前端页面需求名称输入"4.19活动",传递到后台时出现中文乱码问题: 解

JS传参中文乱码问题.NET

前台js代码 window.location.href = "/product.aspx?id=2&title=" +encodeURIComponent(strtitle) 后台代码 title = HttpUtility.UrlDecode(title); 很简单这样就解决了中文乱码问题

js页面传参中文乱码问题

data:'title='+escape(title.value)+'&content='+escape(content.value),)使用escape编码,注意需要utf8. 例如:data:'title='+escape(title.value)+'&content='+escape(content.value),) aspx后台:System.Web.HttpUtility.HtmlEncode(this.Request.QueryString[0].ToString())