关于url传参中文乱码问题

之前都一直很不了解中文编码得问题,之前在做项目中没碰到那么头痛的问题。所以一直没有了解中文乱码的问题。

问题描述:

地址:

http://localhost:8080/sun-government/contest/get_teams_by_type_with_page?typeName=新材料

当在windows

跑 myeclipse的命令台  能正确打印出typeName的参数,而且持久层并没有问题。

当在 linux

跑catalina模式  打印出乱码,持久层也是乱码。

百度了好几个好几个小时,测试上传部署测试上传部署后

问题解决了:

在传入参数时候中文urlencode

在获取参数时编码:

new String(words.getBytes("iso8859-1"), "utf-8")

(好像是直接urldecode也行)

这样获取参数后 在linux打印输出和持久层都没问题,但是在windows下跑就出问题了。

疑问:

网页编码,控制台编码,持久层编码三者究竟关系是怎么样的,三个层之间的传参过程中编码是怎么样的。(这次的解决问题只是通过百度尝试得出解决方案,并不理解)

总结

可靠的 解决url传参中文乱码问题的方案:

  1. 如上所述 new String(words.getBytes("iso8859-1"), "utf-8") (可能是gbk 可能是utf-8) 不过这还不懂为何是utf-8,对应哪个设置
  2. 在网页传入后台之前对url进行 urlencode  ,后台获取参数时 进行urldecode

( 不过这个并未尝试成功)

时间: 2024-08-03 13:55:27

关于url传参中文乱码问题的相关文章

Java URL传参中文乱码问题

我们经常会遇到这样的场景:在URL中传递参数,如果该参数为中文,如果设置不当,会出现乱码问题. URL传参所使用的编码为服务器中设置的编码,而ajax请求的编码为页面编码. 如果不设置tomcat的默认编码为ISO-8859-1,而如果在设置中加入 useBodyEncodingForURI="true" <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="

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())