JAVA 中URL中文参数乱码的处理方法(汇总)

  解决输入的全角汉字或者日文在URl中乱码的问题。以下我的实现

  1.   JS代码:
  2.   function shiborikomuFw() {
  3.       var url = ‘${url08}‘;
  4.       var str = document.getElementsByName(‘fw‘);
  5.       //Str str = document.getElementsById(‘fw‘).Value;
  6.       for (var i = 0; i < str.length; i++) {
  7.       url = url + "&fw=" + encodeURI(str[i].value);
  8.       }
  9.       window.location.href = url;
  10.   }
  11.   JAVA代码:
  12.   String fw = (String) form.fw;
  13.   if (fw != null && !"".equals(fw)) 
  14.     {
  15.       try 
  16.         {
  17.           fw = new String(fw.getBytes("ISO-8859-1"),"UTF-8");
  18.           // fw = java.net.URLDecoder.decode(fw, "UTF-8");
  19.           form.fw = fw;
  20.       } 
  21.         catch (Exception e) {}
  22.   }

  这样就解决问题了,在其他情况下也会有乱码,以下转自网络的各种解决方法。做个记号,方便大家查阅。

  方法一:
  1. http://xxx.do?ptname=‘我是中国人‘
  2. String strPtname = request.getParameter("ptname");
  3. strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8");
  方法二:
  1. <%@ page contentType="text/html;charset=gb2312" %>
  2. <%
  3.   //request.setCharacterEncoding("GBK");
  4.   if(request.getParameter("url")!=null)
  5.   {
  6.       str=request.getParameter("url");
  7.       str=java.net.URLDecoder.decode(str,"GB2312");
  8.       str=new String(str.getBytes("ISO-8859-1"));
  9.       out.print(str);
  10.   }
  11. %>
  12. ==================================
  13.   public String chinatoString(String str)
  14.   {
  15.       String s=str;
  16.       try
  17.       {
  18.           byte tempB[]=s.getBytes("ISO-8859-1");
  19.           s=new String(tempB);
  20.           return s;
  21.       }
  22.       catch(Exception e)
  23.       {
  24.           return s;
  25.       }
  26.   }
  27. ====================================================
  28.   function URLencode(sStr){
  29.       return escape(sStr).
  30.       replace(//+/g, ‘%2B‘).
  31.       replace(//"/g,‘%22‘).
  32.       replace(//‘/g, ‘%27‘).
  33.       replace(////g,‘%2F‘);
  34.   }
  方法三:

  如果用jstl的话,可以自己写一个el的function,调用URLEncoder.encode来编码。

  IE缺省对URL后面的参数是不编码发送的,但是tomat缺省是按ISO8859-1来进行URL解码,因此才会出现上述错误。好的做法是:

  1、在URL参数中确保用UTF-8编码之,方法可以用js函数encodeURI(),或调用自定义的el function;

  2、设置server.xml中的Connector熟悉URIEncoding="UTF-8",确保解码格式与编码格式统一;

  方法四:

  在action中,

  1. String s=request.getParameter("s");
  2. s=new String(s.getBytes("iso-8859-1"),"gbk");

  四种方法应该都没问题,我已经测试过了。

时间: 2024-12-23 14:41:05

JAVA 中URL中文参数乱码的处理方法(汇总)的相关文章

java url中文参数乱码问题

http://www.blogjava.net/jerry-zhaoj/archive/2009/07/16/286993.html 转 JAVA 中URL链接中文参数乱码的处理方法JAVA 中URL链接中文参数乱码的处理方法 JAVA 中URL链接中文参数乱码的处理方法 在url中问参数乱码,我们已经在 "解决ajax提交中文.URL中文参数传递后的乱码问题的解决办法" 一张提出了一中解决办法, 网子是:http://www.javaly.cn/javahome/java/conte

js的url中传递中文参数乱码,如何获取url中参数问题

一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript”> function send(){ var url = "test01.html"; var userName = $("#userName").html(); window.open(encodeURI(url + "?userName="

解决url中文参数乱码的问题--解码

<html> <body> <h3 class="projectName" id="projectName"></h3> <script type="text/javascript"> var unitID;    var unitName;    //获取参数的函数    function geturlPara()    {        var url = document.URL;

url中文参数乱码问题

1.问题: web项目里url的中文参数乱码 2.解决: (1)前台:encodeURI(encodeURI(code)) (2)后台:URLDecoder.decode(new String(code.getBytes("iso-8859-1"),"utf-8"), "utf-8") 3.疑问: (1)为什么前台需要编码两次? 因为request.getParameter(String)会进行一次URI的解码过程,调用内置的解码过程会导致乱码

Web中的中文参数乱码

中文参数乱码    1 get方式传参,中文乱码        修改tomcat中的配置server.xml        在修改端口的标签中添加属性URIEncoding="XXX"        <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort=

AJAX在GBK编码页面中传中文参数乱码的问题

---恢复内容开始--- 页面编码是GBK的情况下传递中文有乱码,解决方法如下: 在ajax传递前用若是Array,JSON,等其它对象,可用JSON.stringfy字符串序列化后,赋值给ajax传递, 在后台获取后,对于未使用JSON.stringfy序列化的情况下,直接转码:将utf-8转成gbk编码的,再处理. 在后台进行转码. mb_convert_encoding($brand_name, "GBK", "utf-8"); 另一种解决方法 jQuery(

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

浏览器对有中文参数的url大部分都用utf-8编码,但我也曾经遇见过用GB2312编码的:如果遇见这样情况,那么接受到的参数就会出现乱码.乱码情况视服务器解码方式,Asp.Net网站一般默认为utf-8解码,如果GB2312编码就会出现乱码. 最佳的解决办法: 当然是使用js编码参数后再进行get或post: encodeURIComponent 特殊情况: 当然这是普通情况,如遇到 string input = GetUrlParam(key).ToLower();//GetUrlParam

关于Tomcat/Android/JAVA交互时中文传输乱码的解决方法

最近在做项目的时候,与服务器交互传输信息时,出现中文乱码问题.由于一开始对编码这个东西不是很了解,都是一知半解状态,平时所谓的程序中的转码也都是基于侥幸的过去了,没遇到什么问题.可这次却没这么幸运了,中文乱码....,好了,废话不多说了,直入主题. 如何才能正确解码?首先要清楚的知道源数据是以什么样的编码方式encode过来的,然后再以对应的编码方式decode才能正确解码,否则就会变成乱码! 举例说吧: 以Tomcat作服务器,默认的环境编码是ios-8859-1,客户端编码方式为UTF-8(

火狐浏览器URL中传中文参数乱码问题

火狐浏览器:前端页面传中文 <span data-bind=" check_action:'roleMenuPriv'"> <a data-bind="attr:{href:'#pages/systems/roles/authorization?uuid=' + $row.uuid+'&name='+encodeURI(encodeURI("此处为要传的中文字符"))},disable:false">权限</