首先,弄清楚为什么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中文参数解决方案的更多相关文章

  1. 【记录】JS 获取 URL 中文参数编码

    比如 URL:http://www.xxxx.com/中文参数 这个在 js 获取"中文参数"的时候会出现乱码. 解决方法:decodeURIComponent(获取的中文参数);

  2. java url中文参数乱码问题

    http://www.blogjava.net/jerry-zhaoj/archive/2009/07/16/286993.html 转 JAVA 中URL链接中文参数乱码的处理方法JAVA 中URL ...

  3. -_-#【乱码】URL中文参数

    JavaScript利用URL向后台传入中文参数乱码问题解决之道! encodeURIComponent(encodeURIComponent('ya呀')) http://wap.baomihua. ...

  4. URL中文参数乱码的一个解决办法

      浏览器对有中文参数的url大部分都用utf-8编码,但我也曾经遇见过用GB2312编码的:如果遇见这样情况,那么接受到的参数就会出现乱码.乱码情况视服务器解码方式,Asp.Net网站一般默认为ut ...

  5. request.getParameter()获取URL中文参数乱码的解决办法

    这个问题耽误好长时间,URL传中文参数出现乱码,就算首次使用request接收就添加 request.setCharacterEncoding("UTf-8"); 依然报错不误. ...

  6. js 处理url中文参数 java端接收处理

    正常情况下当http请求中带有中文参数时,浏览器会自动对中文进行一次编码(按照当前页面的pageEncoding),java端容器会对接收到的参数自动进行一次转码,则request.getParame ...

  7. 关于HTTP GET请求的url中文参数编码

    场景:前端用JS构造了一个GET请求,携带了一个中文的参数,通过Spring MVC传到后台以后解析中文是乱码. 1. 发送请求,从浏览器中捕获到http的请求内容如下: Remote Address ...

  8. url中文参数乱码问题

    1.参数乱码: js: var url = $$pageContextPath + "iecp/ads/heilanAnalogCurve.do?pointCode=" + get ...

  9. JS获取URL中文参数乱码的解决方法

    浏览器URL参数值中带有汉字字符,在接收时直接获取会出现乱码,下面是解决方法(传递前不需要encodeURI): function getUrlVars() { var vars = [], hash ...

随机推荐

  1. 深入ThreadLocal之二

    概述 相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路:ThreadLocal的目的是为了解决多线程访问资 ...

  2. 你应该知道的jQuery技巧

    帮助提高你jQuery应用的简单小技巧. 回到顶部按钮 图片预加载 判断图片是否加载完 自动修补破损图像 Hover切换class类 禁用输入 停止正在加载的链接 toggle fade/slide ...

  3. code md5

    using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...

  4. Ubuntu下启动Apache的Rewrite功能

    在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available/rewrite.l ...

  5. wall 和panel有啥区别

    Panel指的是一个面板,用它来对一些控件进行分组,就像组合框控件,即Visual Studio里面用的Group Box Control:而在一些软件界面里面也可以表现为工具条,比如编辑工具条.文件 ...

  6. textarea文本换行和页面显示换行符

    在textarea里写的文本有换行,但是显示到页面后就不会自动换行,通过对数据分析发现textarea里的换行符是\n\r,然而HTML中的换行为<\br>解决办法有两种: 第一种:把文本 ...

  7. YUV主要采样格式理解

    主要的采样格式有YCbCr 4:2:0.YCbCr 4:2:2.YCbCr 4:1:1和 YCbCr 4:4:4.其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也 ...

  8. spark1.2.0版本SparkSQL使用parquet类型注意事项

    在Spark1.2.0版本中是用parquet存储类型时注意事项: sql语句: select * from order_created_dynamic_partition_parquet; 在spa ...

  9. mysql命令整理0919 不定期更新中

    1)新建数据库 create database +database_name:         查询数据库  show databases;       切换数据库   use database_na ...

  10. 洛谷P2723 丑数 Humble Numbers

    P2723 丑数 Humble Numbers 52通过 138提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 对于一给定的素数 ...