`
mzh_2008beijing
  • 浏览: 233975 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

URL传中文参数导致乱码的解决方案之encodeURI

 
阅读更多
       通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码。解决方案有很多种。本文介绍如何通过encodeURI来解决中文乱码问题。
       首先,在前端页面准备参数的时候,需要对中文参数进行encode处理:

var url = 'HelloWorldServlet?star_name='+encodeURI(encodeURI("刘德华"));
window.open(url);

       其次,在服务端后台程序代码HelloWorldServlet中用java.net.Decoder进行解码,从而得到中文参数的真实值:
String starName = 
java.net.URLDecoder.decode(request.getParameter("star_name"),"UTF-8");

       目的达到了。哈哈,很简单吧。不过此时你可能有个疑问,前端在进行encode编码时,为什么用了两次encodeURI,而服务器后端在解码时只解了一次?
       原因是:容器会默认帮你解一次码。
       此时,你可能又要问了,既然容器会默认解一次码,那么为什么不直接在前端只进行一次encode,服务端程序直接request.getParameter(“star_name”) ?画蛇添足了吧?
       原因是:容器默认解码时采用的编码是容器的默认编码,可能是UTF-8,GBK,也可能是其他编码方式。这与你的应用的编码方式未必会一致。所以你直接获取的话可能会出现乱码。
       当然也可以通过修改容器的默认编码,而实现“前端一次encode——后端直接获取”的途径获取中文参数。
       例如:Tomcat的默认编码修改方式:
       修改%TOMCAT_HOME%/conf/server.xml,找到这行代码:

<Connector port="8080" protocol="HTTP/1.1" redirectPort="8449" connectionTimeout="20000"/>

       在后面可以追加URIEncoding属性,例如:
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8449" connectionTimeout="20000" URIEncoding="UTF-8"/>


       如果不方便改容器默认编码方式,或者应用程序本身就有多种编码方式的话,还是采取本文给出的解决方案,通过“前端两次encode——后端一次decode”的途径获取中文参数吧。

That’s all !
2
7
分享到:
评论

相关推荐

    javaScript encodeURI中文乱码

    ### JavaScript encodeURI中文乱码问题解析与解决方案 在Web开发中,处理中文字符或其它非ASCII字符时,经常遇到的问题之一就是编码问题,特别是在URL处理过程中。JavaScript中的`encodeURI()`函数是用于对URL进行...

    web程序开发中的URL乱码解决方案

    ### Web程序开发中的URL乱码解决方案 #### 一、前言与背景 在Web应用程序的开发过程中,我们经常遇到的一个问题就是URL中的中文字符或特殊字符出现乱码的情况。这不仅影响用户体验,还可能导致功能异常。本文将...

    Url传值乱码解决方案

    本文将深入探讨URL编码的原因、原理以及如何解决URL传值乱码的常见问题。 URL(统一资源定位符)是互联网上资源的唯一标识,它包含了协议、主机名、路径和查询参数等部分。由于URL中可能包含非ASCII字符或特殊字符...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

    Ajax中文乱码问题解决方案

    本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**:服务器与客户端(浏览器)之间使用的字符编码格式不同,例如服务器使用GBK编码,而浏览器使用UTF-8编码...

    从js向Action传中文参数出现乱码问题的解决方法.docx

    以下是一些关于如何解决从JS向Action传中文参数出现乱码问题的详细方法和注意事项: 首先,确保整个项目的编码一致性是至关重要的。在项目配置中,包括HTML、JSP、CSS、Java、XML等文件,都应统一采用UTF-8编码格式...

    javascript 传参中文乱码解决方案

    ### JavaScript 传参中文乱码解决方案 在进行Web开发时,经常会遇到中文字符在URL传输过程中出现乱码的问题。这主要是因为不同的系统、浏览器或服务器可能采用不同的编码方式处理URL中的参数,导致原本正常的中文...

    ajax传递中文参数乱码解决办法

    ### AJAX传递中文参数乱码解决办法 在Web开发过程中,数据传输是不可或缺的一部分,而AJAX作为一种无需重新加载整个页面的情况下就能与服务器交换数据的技术,被广泛应用于动态数据交互场景中。然而,在处理中文等...

    ajax乱码解决方案

    **Ajax 乱码解决方案** Ajax 乱码问题在开发Web应用程序时经常遇到,尤其是在涉及到不同编码格式时。本文将深入探讨Ajax与字符编码相关的技术细节,并提供几种有效的解决策略。 首先,JavaScript处理字符的方式是...

    url地址传参中文乱码处理

    在处理URL地址传参中文乱码时,通常有三种解决方案: 1. 字符串转码:使用new String(“xxxxx”.getBytes("iso-8859-1"),"utf-8")方式将字符串转码为UTF-8编码。然而,这种方式有很大的弊端,因为它可能无法将所有...

    ajax到servlet乱码解决

    AJAX 到 Servlet 乱码解决方案 在 Web 开发中,使用 AJAX 通过 URL 传参数给 Servlet 时,经常会遇到乱码问题,即使使用了统一的字符编码也没用。下面我们来探讨这个问题的解决方案。 问题描述 当我们使用 AJAX ...

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

    本文将深入探讨“奇数个中文字符URL传递乱码”的问题,并提供一种可行的解决方案。 ### 一、问题背景 #### 1.1 URL编码概述 URL(Uniform Resource Locator)用于标识互联网上的资源位置。由于某些字符在URL中具有...

    js中文乱码问题分析及解决方案.docx

    js中文乱码问题分析及解决方案 在Web开发中,JavaScript文件的编码问题是一个常见的错误,特别是在引入外部JavaScript文件时。如果Web页面和JavaScript文件使用不同的编码,可能会出现乱码问题。本文将分析...

    get方式传参中文乱码问题的解决方案

    ### get方式传参中文乱码问题的解决方案 在Web开发中,经常遇到GET请求传递中文参数时出现乱码的问题。这种现象通常出现在不同编码格式之间的转换过程中,导致浏览器或者服务器端解析参数时出现问题。本文将深入...

    GET方法URL中传递中文参数乱码的解决方法

    然而,当我们在GET请求的URL中直接传递包含中文字符的参数时,可能会遇到乱码问题。这是因为不同系统、浏览器和服务器对字符编码的支持不一致,导致在传输过程中中文字符无法正确解析。以下是对这个问题的深入探讨和...

    Ajax乱码解决方案

    ### Ajax乱码解决方案 在进行Ajax开发的过程中,经常会遇到数据编码问题导致的乱码现象。这类问题虽然看似简单,但若处理不当,则可能耗费大量时间进行调试与解决。本文将结合一个具体的案例来探讨如何有效地解决...

    url 编码 js url传参中文乱码解决方案

    在Web开发过程中,使用JavaScript在URL中传递参数时,常常会遇到中文乱码的问题。这主要是因为URL和HTTP协议都是基于...通过合适的编码和解码手段,可以有效解决JavaScript在URL中传递参数时可能出现的中文乱码问题。

    Ajax传参是乱码解决方案

    ### Ajax传参是乱码解决方案 在Web开发过程中,数据编码问题经常会导致各种各样的乱码现象出现。尤其是在使用Ajax进行前后端交互时,如果字符编码处理不当,很容易导致前端发送给后端的数据出现乱码。本文将详细...

    JS URL传中文参数引发的乱码问题

    首先,我们来看在JS中对中文参数进行编码的解决方案: 1. `encodeURI()` 方法:这个方法主要用于对整个URI进行编码,它会将非ASCII字符转化为%xx格式,但保留了一些特殊字符,如"!", "@", "#", "$", "&", "*", "(",...

Global site tag (gtag.js) - Google Analytics