`
mzh_2008beijing
  • 浏览: 230392 次
  • 性别: 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中文乱码

    java URL中文参数乱码处理

    js 中乱码处理法方式 encodeURIComponent(encodeURIComponent(customerAddress)) ...encodeURI(url) String qijuType= new String(request.getParameter( ("qijuType")).getBytes("ISO-8859-1"), "utf-8");

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

    超连接乱码解决: 1.先把可能带有中文参数的连接地址转换为十六进制的编码 (1).如果是在js中使用的超级连接,则要先把该超连接经过两次转换为十六进制的编码后再保存在一个变量中,即:var url=encodeURI("...");url=...

    jsp中URL传递中文参数的处理方法

    在页面的url中使用encodeURI(encodeURI(中文)),对中文... 您可能感兴趣的文章:js将json格式的对象拼接成复杂的url参数方法js的form表单提交url传参数(包含+等特殊字符)的两种解决方法JS根据key值获取URL中的参数值及

    JSP中js传递和解析URL参数以及中文转码和解码问题

    1.传递参数: 代码如下: var pmt = ‘sensor=’+ encodeURI(encodeURI(sensor))+’&device=’+encodeURI(encodeURI(device))+’&instrument=’; pmt += encodeURI(encodeURI(instrument))+’&n=’+n+’&addDate=’+...

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

    经过实践发现下面的方法可以解决中文乱码问题: JSP的JS中:中文参数用encodeURI(encodeURI(中文参数)),经过两次转码。例如: 代码如下: function show(next,id,realName){ document.forms[‘f2’].action=”...

    Ajax传递中文参数到后台乱码的有效解决方法

    使用Ajax传递中文参数,如果不对参数进行处理的话,传到后台会变成乱码,经测试可以使用如下方法 这里是以jquery.autocomplete插件中获取输入框中的数据传到后台为例: 注意要对中文使用encodeURI编码两次 代码如下:...

    SmartUpload中文乱码解决

    SmartUpload中文乱码解决版本 亲自改写源码 jar包含源码 亲测可用 CSDN另一人上传的 不包含SmartUpload的Request类 不完善 201 511行进行修改 String s11 = new String(m_binArray, m_startData, (m_endData - m_...

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

    ”GB2312″ requestEncoding=”GB2312″ responseEncoding=”GB2312″/&gt; 这样参数就以gb2312的中文编码方式传输了。而一般默认是utf-8. 2.在传参是先编码在传输,接受时先编码,在接收。 string mm=Server....

    Get中文乱码IE浏览器Get中文乱码解决方案

    Get中文乱码问题解决方案: 修改Tomcat根目录下conf / server.xml文件,代码如下: 代码如下: ”8080″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″ URIEncoding=”UTF-8″&gt; 但是,...

    多文件上传例子(解决中文乱码)

    多文件上传例子,彻底解决中文乱码问题了。总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在...

    js传参数受特殊字符影响错误的解决方法

    解决方法: encodeURI 方法 将文本字符串编码为一个有效的统一资源标识符 (URI)。 encodeURI(URIString) 必选的 URIString 参数代表一个已编码的 URI。 说明 encodeURI 方法返回一个编码的 URI。如果您将编码结果...

    解决URL地址中的中文乱码问题的办法

    解决URL地址中的中文乱码问题的办法 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息。乱码问题就此产生了,该如何解决...

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

    1、在JS里对中文参数进行两次转码 代码如下: var login_name = document.getElementById(“loginname”).value; login_name = encodeURI(login_name); login_name = encodeURI(login_name); 2、在服务器端对...

    页面get请求 中文参数方法乱码问题的快速解决方法

    对于get方式,请求参数中存在中文,可以使用下面的方法进行处理: ...以上这篇页面get请求 中文参数方法乱码问题的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。

    动态加载iframe时get请求传递中文参数乱码解决方法

    解决方案 使用 encodeURI(‘中文’) 进行编码操作, js代码: 代码如下: $(function() { $(‘#frame’).attr(‘src’, ‘${basePath}mi/right.do?bidItemName=’ +encodeURI(‘中文’)); }); html代码 代

    ajax中文乱码如何解决

    今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。我的开发环境:XP, eclipse,使用GB18030编码。 当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头...

    js url传值中文乱码之解决之道

    在websphere 中使用的是url=encodeURI(encodeURI(url)); //用了2次encodeURI 测试成功,第一次转换没有尝试, 处理方法一。 js 程序代码:url=encodeURI(url);注意是整个URL 服务器端的代码:String linename = new ...

    Request.QueryString 乱码问题

    Request.QueryString 获取的中文变乱码了,...1、html中,可以用js的 encodeURI() 方法将要传的中文处理,例如 encodeURI("I am 乱码") ,处理之后,字符串中的中文 “乱码” 两字将会被被十六进制的转义序列进行替换。

Global site tag (gtag.js) - Google Analytics