`
ai_longyu
  • 浏览: 505598 次
社区版块
存档分类
最新评论

url中文乱码

阅读更多

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"

就可以解决。

3
4
分享到:
评论
1 楼 aijuans1 2012-05-28  
这个挺基础的吧

相关推荐

    java中文乱码之解决URL中文乱码问题的方法

    URL中文乱码问题主要是由于URL编码和解码过程中的不一致导致的。下面将详细介绍如何解决这个问题,并探讨几种常用的方法。 首先,我们需要了解URL编码的基本原理。URL(统一资源定位符)不能包含某些特殊字符,如...

    解决url中文乱码.doc

    在Java Web开发中,URL中文乱码问题是一个常见的困扰,主要出现在传递含有中文字符的参数时。本案例中,我们将探讨如何解决这个问题,涉及到的主要知识点包括URL编码、字符集转换以及在Java Servlet、JSP和Struts2...

    jsp url中文乱码四种解决方式

    get提交中文乱码 地址重写中文乱码 jsp url中文乱码四种解决方式

    java中文乱码解决之道(8)解决URL中文乱码问题Jav

    本文将深入探讨如何在Java中有效地解决URL中文乱码问题。 首先,我们需要理解URL编码的原理。URL编码遵循RFC 3986标准,它规定了在URL中非ASCII字符应被转换为百分号编码形式(%xy),其中xy是该字符的UTF-8编码的...

    java URL中文参数乱码处理

    js 中乱码处理法方式 encodeURIComponent(encodeURIComponent(customerAddress)) decodeURIComponent(customerName) js到java encodeURI(url) String qijuType= new String(request.getParameter( (...

    asp.net中URL参数传值中文乱码的三种解决办法

    在ASP.NET开发过程中,我们时常会遇到URL参数传递中文字符时出现乱码的问题。这个问题主要源于字符编码不一致导致的,下面将详细讲解三种解决这个问题的方法。 ### 方法一:设置Web.config配置 在ASP.NET应用的`...

    url中文乱码处理大全.docx

    【url中文乱码处理大全】 在信息技术领域,URL(统一资源定位符)是访问网络资源的重要途径,然而,当URL中包含中文字符时,由于不同的字符编码标准,可能会出现中文乱码的问题。本文主要探讨了两种针对Tomcat...

    Android Url中文乱码问题

    在开发过程中遇到了Url的中文乱码问题,经过多次测试,解决了问题,并分享给大家,希望能够你帮助!

    IOS URL中文乱码问题解决方案

    总之,解决iOS URL中文乱码问题的关键在于正确地对URL进行编码,避免不必要的重复编码,并在需要时使用适当的解码方法。同时,了解URL编码的原理和标准,以及如何在不同平台间正确传递和处理这些信息,对于开发过程...

    url地址传参中文乱码处理

    "URL地址传参中文乱码处理" URL地址传参中文乱码处理是指在Web应用程序中,将中文参数传递给服务器时,可能出现乱码的情况。这种情况可能是由于编码问题或Tomcat服务器的配置问题引起的。 在处理URL地址传参中文...

    奇数个中文字符url传递乱码

    当URL中包含奇数个中文字符时,可能会出现乱码的情况,这不仅会影响用户体验,还可能导致程序逻辑错误。本文将深入探讨“奇数个中文字符URL传递乱码”的问题,并提供一种可行的解决方案。 ### 一、问题背景 #### ...

    jquery获取URL中参数解决中文乱码问题的两种方法

    当我们需要在两个页面间通过URL传递参数时,经常会遇到中文乱码问题。这个问题主要是因为URL中的参数可能没有经过正确的编码和解码处理。为了解决这个问题,我们可以采取一些方法,特别是当使用jQuery来获取URL参数...

    php中url地址栏传参数中文乱码解决方法汇总

    php 中 URL 地址栏传参数中文乱码解决方法汇总 PHP 中 URL 地址栏传参数中文乱码解决方法汇总是指在 PHP 编程中,如何解决 URL 地址栏传参数中文乱码的问题。这个问题是由于浏览器和服务器之间的编码问题引起的。 ...

    解决zxing二维码pdf417中文乱码问题

    然而,当处理包含中文字符的PDF417码时,可能会遇到乱码问题。这个问题主要源于字符编码的不匹配或未正确设置。 首先,我们需要理解二维码和PDF417的工作原理。二维码和PDF417都是将数字、字母和特殊符号转换为二维...

    URL中汉字乱码问题

    标题“URL中汉字乱码问题”涉及到的是在Web开发中常见的字符编码问题,尤其是在处理包含汉字的URL时。URL(Uniform Resource Locator)是用于定位网络资源的地址,它必须遵循特定的编码规则,以确保在不同系统间传输...

    svn乱码解决

    在使用svn时,有时会遇到文件名或文件内容显示为乱码的问题,这给团队协作带来了困扰。本文将详细讲解如何解决svn乱码问题,以及涉及到的相关技术点。 首先,我们需要理解问题的根源。svn乱码通常是因为字符编码不...

    C++Http上传文件到web服务器,解决中文参数乱码

    当涉及到非ASCII字符,如中文,不正确的编码处理会导致乱码。微软提供的CHttpConnect类在处理这种场景时可能存在不足,因此我们需要理解如何正确地编码和传递中文参数。 首先,让我们了解HTTP请求的基本结构。一个...

    彻底解决中文乱码的问题

    在IT行业中,尤其是在Java编程领域,中文乱码问题是一个常见的挑战。这主要涉及到字符编码的处理,涉及到Unicode、GBK、UTF-8等不同编码格式之间的转换和一致性问题。本篇文章将深入探讨这个问题,并提供一种彻底...

Global site tag (gtag.js) - Google Analytics