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"
就可以解决。
url中文参数解决方案的更多相关文章
- 【记录】JS 获取 URL 中文参数编码
比如 URL:http://www.xxxx.com/中文参数 这个在 js 获取"中文参数"的时候会出现乱码. 解决方法:decodeURIComponent(获取的中文参数);
- java url中文参数乱码问题
http://www.blogjava.net/jerry-zhaoj/archive/2009/07/16/286993.html 转 JAVA 中URL链接中文参数乱码的处理方法JAVA 中URL ...
- -_-#【乱码】URL中文参数
JavaScript利用URL向后台传入中文参数乱码问题解决之道! encodeURIComponent(encodeURIComponent('ya呀')) http://wap.baomihua. ...
- URL中文参数乱码的一个解决办法
浏览器对有中文参数的url大部分都用utf-8编码,但我也曾经遇见过用GB2312编码的:如果遇见这样情况,那么接受到的参数就会出现乱码.乱码情况视服务器解码方式,Asp.Net网站一般默认为ut ...
- request.getParameter()获取URL中文参数乱码的解决办法
这个问题耽误好长时间,URL传中文参数出现乱码,就算首次使用request接收就添加 request.setCharacterEncoding("UTf-8"); 依然报错不误. ...
- js 处理url中文参数 java端接收处理
正常情况下当http请求中带有中文参数时,浏览器会自动对中文进行一次编码(按照当前页面的pageEncoding),java端容器会对接收到的参数自动进行一次转码,则request.getParame ...
- 关于HTTP GET请求的url中文参数编码
场景:前端用JS构造了一个GET请求,携带了一个中文的参数,通过Spring MVC传到后台以后解析中文是乱码. 1. 发送请求,从浏览器中捕获到http的请求内容如下: Remote Address ...
- url中文参数乱码问题
1.参数乱码: js: var url = $$pageContextPath + "iecp/ads/heilanAnalogCurve.do?pointCode=" + get ...
- JS获取URL中文参数乱码的解决方法
浏览器URL参数值中带有汉字字符,在接收时直接获取会出现乱码,下面是解决方法(传递前不需要encodeURI): function getUrlVars() { var vars = [], hash ...
随机推荐
- MySQL 绿色版安装方法图文教程
一.下载,这里使用绿色解压缩版 http://mirror.services.wisc.edu/mysql/Downloads/MySQL-5.1/mysql-noinstall-5.1.32-win ...
- (Delphi) Windows 32 API程序设计目录
这里所有程序均使用Delphi调用Windows 32 API方式实现,并不是使用VCL已经封装好的类实现的! (一)第一个窗口程序 01 创建第一个窗口.
- Task.Run Vs Task.Factory.StartNew z
在.Net 4中,Task.Factory.StartNew是启动一个新Task的首选方法.它有很多重载方法,使它在具体使用当中可以非常灵活,通过设置可选参数,可以传递任意状态,取消任务继续执行,甚至 ...
- HDU 5834 [树形dp]
/* 题意:n个点组成的树,点和边都有权值,当第一次访问某个点的时候获得利益为点的权值 每次经过一条边,丢失利益为边的权值.问从第i个点出发,获得的利益最大是多少. 输入: 测试样例组数T n n个数 ...
- nyoj 73 比大小
点击打开链接 比大小 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如123456789123456789要大于 ...
- [HDU 2955]Robberies (动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意是给你一个概率P,和N个银行 现在要去偷钱,在每个银行可以偷到m块钱,但是有p的概率被抓 问 ...
- Git简单使用
删除本地旧分支,拉取新分支 #!/bin/bash set -e cd /project/ git pull git fetch ori --prune git branch -r|sed 's/or ...
- 【转载】eclipse调试arm裸机程序
一.集成开发环境 软件部分:eclipse , GDB Server , Jlink软件 硬件部分:Jlink硬件 准备工作1:从SD/NOR Flash启动,格式化nand flash 准备工作2: ...
- flexgrid的应用
第一.导入必须的CSS与JS: <link rel="stylesheet" type="text/css" href="css/flexigr ...
- 简洁之美 -约瑟夫环的python 解法
问题描述: 约瑟夫环问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到k的那个人出列:他的下一个人又从1开始报数,数到k的那个人又出列:依此规律重复下 ...