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 ...
随机推荐
- Python进阶07 函数对象
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函数也是一个对象 ...
- 使用POI读取excel文件内容
1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...
- [ActionScript 3.0] 自定义顶级类
为了结合FlashBuilder编译参数,达到发布项目时不编译trace代码方便,写一个顶级类: package { public function tracing(...args):void { C ...
- Java SE 第二十四讲----static与final使用陷阱关键字
1.对于final类型成员变量,一般来说有两种赋值方式: a)在声明final类型的成员变量时就附上初值 package com.cl.staticandfinal; public class Fin ...
- Centos 7配置LAMP
因为安装zabbix需要LAMP环境,特记录如下. LAMP指的Linux(操作系统).Apache HTTP 服务器,MySQL(有时也指MariaDB,数据库软件)和PHP(有时也是指Perl或P ...
- 用android:clipChildren来实现红心变大特效
最近在看别人技术博客(http://www.cnblogs.com/over140/p/3508335.html)的时候,发现一个属性:android:clipChildren属性. 翻文档找到下面介 ...
- (转)winform post 访问网站
最近使用winform对webapi进行测试,搜集到园友的文章,记录下来供后续参考. 第一篇文章,原文地址http://www.cnblogs.com/Johnny_Z/archive/2012/02 ...
- 在 ASP.NET MVC 应用中使用 NInject 注入 ASMX 类型的 Web Service
这几天,有同学问到为什么在 ASP.NET MVC 应用中,无法在 .ASMX 中使用 NInject 进行注入. 现象 比如,我们定义了一个接口,然后定义了一个实现. public interfac ...
- vc读写注册表
注册表是Windows重要组成部分,注册表记录了大量有关电脑软硬件的信息.注册表中的值通过其名称标识.值名称由与键名相同的字符组成.值本身可以是字符串.二进制数据或者是32位无符号值.在这里我们主要运 ...
- 开发者眼中最好的 22 款 GUI 测试工具
1.Abbot - Java GUI 测试框架 Abbot是一个基于GUI的简单的Java测试框架,它能够帮助开发者测试Java用户界面. 它提供事件自动生成和验证Java GUI组件,使您能够轻松地 ...