url 传递中文会产生乱码,那么如何解决,下面分享下解决方案
首先,弄清楚为什么url传递中文会转码或者乱码,以及http头
contentType="text/html; charset=GBK"
的作用。
html代码会经过web服务器,浏览器处理,所以造成转码或者乱码的原因,可能涉及到:页面本身的设置、web服务器的设置、浏览器的设置。
在动态页面,比如jsp、php中,可以设置
contentType="text/html; charset=GBK"
在服务器,比如apache中可以在web.xml中设置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="utf-8"/>
在Spring、Struts等插件中还可以配置页面过滤器。
在IE等浏览器中可以设置强制的url编码规则。
但是按照网络标准RFC-1738规定,一般的浏览器都是以utf-8或者gbk等方式来编码url的。
解决乱码要从根源入手,根源是什么?刚才我说了,处理html的顺序是:页面本身的设置、web服务器的设置、浏览器的设置。那么最有效的方式就是照顾到浏览器。
在web.xml或者Spring、Struts等中我们都不用管,因为他们是间接的方式,不一定其作用。
怎么照顾到浏览器?就是将url的编码规则自己指定。接收的时候自己解码。
制定url编码规则很简单,就是将url先用utf-8编码,编码结果是英文、数字、百分号等符合网络标准RFC-1738的格式。
编码的方法可以在服务器端的程序中进行,但那样效率太低。javascript已经做好了这方面的工作,只需要调用encodeURI()或者encodeURIComponent()函数即可。
要在href、src等处调用javascript的函数,方法如下:
一、在HTML里可以通过"javascript:"方式调用JavaScript的函数或方法,如下所示:
<html>
<head>
<title>使用“javascript:”</title>
</head>
<body>
<a href="javascript:alert('您点击了这个超链接')">请点我</a>
</body>
</html>
二、 "javascript:"不但可以调用JavaScript的方法,也可以调用用户自定义的函数,如下代码所示:
<html>
<head>
<title>使用“javascript:”</title>
<script language="javascript" type="text/javascript">
<!--
function OnclickLink()
{
alert("您点击了这个按钮");
}
-->
</script>
</head>
<body>
<a href="javascript:OnclickLink()">请点我</a>
</body>
</html>
三、与事件结合
<html>
<head>
<title>与事件相结合</title>
<script language="javascript" type="text/javascript">
<!--
function OnMouseOverLink()
{
alert("您的鼠标从第一个超链接上划过");
}
-->
</script>
</head>
<body>
<a href="#" onmouseover="OnMouseOverLink()">请将鼠标放在上面</a><br>
<a href="#" onclick="javascript:alert('您点击了第二个超链接')">请点我</a>
</body>
</html>
传递中文URL的解决方案如下:
<a href="javascript:location=encodeURI('/zollty/search.jsp?form_project=金海湾');">金海湾</a>
点击超链接时实际上要激发javascript函数才其作用,我们不能写成如下形式:
<a href='encodeURI("/zollty/search.jsp?form_project=金海湾")'>金海湾</a>
因为上面的写法在未点击超链接时,href的值就是包含javascript代码的原原本本的字符串,点击后才执行encodeURI()函数,而超链接会以url为“encodeURI("/zollty/search.jsp?form_project=金海湾”来跳转,显然是找不到这个页面的。
最好是写成如下形式:
<a href="javascript:void(0)" onclick="location.href=encodeURI('/zollty/search.jsp?form_project=金海湾');">金海湾</a>
其含义更加明了。
另外就是表单中提交中文的问题,通过设置页面的
contentType="text/html; charset=GBK"
就可以解决。
分享到:
相关推荐
主要为大家分享了介绍了java中文乱码之解决URL中文乱码问题的方法,感兴趣的小伙伴们可以参考一下
get提交中文乱码 地址重写中文乱码 jsp url中文乱码四种解决方式
js 中乱码处理法方式 encodeURIComponent(encodeURIComponent(customerAddress)) decodeURIComponent(customerName) js到java encodeURI(url) String qijuType= new String(request.getParameter( (...
asp.net中URL参数传值中文乱码的三种解决办法
解决java中url传参时出现的中文乱码,在传参页面用URLEncoder.encode("","UTF-8") 在显示页面jsp页面开头加, request.setCharacterEncoding("UTF-8")
java中文乱码解决之道(8)解决URL中文乱码问题Java开发Java经验技巧共7页.pdf.zip
url中文乱码处理大全.docx
在开发过程中遇到了Url的中文乱码问题,经过多次测试,解决了问题,并分享给大家,希望能够你帮助!
主要介绍了IOS 解决URL中文乱码问题解决方案的相关资料,需要的朋友可以参考下
JBoss服务器URL乱码的问题解决办法
url地址传参中文乱码处理
从A页面通过url传参到B页面时,获取URL中参数出现中文乱码问题,解析url参数的正确方法如下,感兴趣的朋友可以参考下
解决zxing二维码pdf417中文乱码问题 编译.net 2.0 4.0
在 ISAPI_Rewrite 1.3 版本时,只要对URL进行UrlEncode操作,就可以正常接收中文,但是换为 3.1版后, 采用GB2312 的接收页面就是乱码了。 换用了ISAPI_Rewrite 3.x后发现编码后的字符会变成乱码,如果直接使用中文...
解决奇数个中文字符url传递乱码问题,做了好久才找到的解决方案!
php中url地址栏传参数中文乱码解决方法汇总
URL汉字编码问题(及乱码解决)
1.将svn下的wc.db赋值到软件目录; 2.命令行cd到软件目录,执行sqlite 3.执行delete from work_queue 4.将生成的wc.db覆盖svn上的,clean up
JavaScript获取Url中的参数(解决中文乱码) 可以点击更改URL按钮 修改url中的参数
1. 汉字乱码 2. 空格变成 + 号 本资源演示Delphi代码,实现javascript能正确进行Base64解码,不出现上述2个问题。 解决思路:进行Base64前先进行URL编码,在进行URL编码的时候,注意设置不需要SpaceAsPlus选项。 ...