1. 程式人生 > >JAVA 中URL中文引數亂碼的處理方法(彙總)

JAVA 中URL中文引數亂碼的處理方法(彙總)

解決輸入的全形漢字或者日文在URl中亂碼的問題。以下我的實現

JSP程式碼:

  1. function shiborikomuFw() {                                      
  2.     var url = '${url08}';                                   
  3.     var str = document.getElementsByName('fw');             
  4. //Str str = document.getElementsById('fw').Value;               
  5. for (var i = 0; i < str.length; i++) {                                  
  6.         url = url + "&fw=" + encodeURI(str[i].value);                               
  7.     }               
  8.     window.location.href = url;
  9. }

JAVA程式碼:

  1.         String fw = (String) form.fw;                   
  2. if (fw != null && !"".equals(fw)) {                 
  3. try {                   
  4.                 fw = 
    new String(fw.getBytes("ISO-8859-1"),"UTF-8");             
  5. // fw = java.net.URLDecoder.decode(fw, "UTF-8");                 
  6.                 form.fw = fw;                   
  7.             } catch (Exception e) {}                    
  8.         }

這樣就解決問題了,在其他情況下也會有亂碼,以下轉自網路的各種解決方法。做個記號,方便大家查閱。

方法一:

  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. <a href="ds.jsp?url=<%=java.net.URLEncoder.encode("編碼的是這裡","GB2312")%>">點選這裡</a> 
  3. <% 
  4. //request.setCharacterEncoding("GBK"); 
  5. if(request.getParameter("url")!=null
  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. public String chinatoString(String str) 
  13.      { 
  14.       String s=str; 
  15. try
  16.       { 
  17. byte tempB[]=s.getBytes("ISO-8859-1"); 
  18.        s=new String(tempB); 
  19. return s; 
  20.       } 
  21. catch(Exception e) 
  22.       { 
  23. return s; 
  24.       } 
  25.     } 
  26. ==================================================== 
  27. function URLencode(sStr) 
  28.     { 
  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",確保解碼格式與編碼格式統一;

方法四:

  1. <script> 
  2. for(var i=0;i<document.links.length;i++){ 
  3. document.links[i].href=encodeURI(document.links[i].href); 
  4. </script> 
  5. 在action中,String s=request.getParameter("s"); 
  6. s=new String(s.getBytes("iso-8859-1"),"gbk");
四種方法應該都沒問題,我已經測試過了。

相關推薦

JAVA URL中文引數亂碼處理方法彙總

解決輸入的全形漢字或者日文在URl中亂碼的問題。以下我的實現 JSP程式碼: function shiborikomuFw() {                                           var url = '${url08}';       

JMeter返回Json資料的處理方法

Json 作為一種資料交換格式在網路開發,特別是 Ajax 與 Restful 架構中應用的越來越廣泛。而 Apache 的 JMeter 也是較受歡迎的壓力測試工具之一,但是它本身沒有提供對於 Json&nb

java後臺解決get請求url中文引數亂碼

解決的程式碼如下 String keyword = request.getParameter("keyword"); keyword = new String(keyword.getBytes("iso-8859-1"), "utf-8"); get請求提交的引數是在位址列

Tomcat'sURL傳遞中文引數亂碼的解決方法

在表單提交中文搜尋過程中,翻頁,連結都帶有關鍵字引數(注意這裡是用URL引數),此時URL必須編碼為你JSP編碼格式,下面以UTF-8為例:Keywords=中國URL=XXX.jsp?keywords=<%=URLEncode.encode("中國","uft-8")

Weblogicurl中文引數jsp頁面亂碼

解決方法讓人大吃一驚,跳轉頁面javascript頁面對url2次編碼,接受頁面就可以正常使用了,甚至不用解碼 var href="mapcall.jsp?phone2="+phones+"&name2="+names; openwin(encodeURI(encodeURI(href)));

IE下get方式傳中文引數亂碼解決方法

亂碼原因:瀏覽器在傳遞url的時候,會使用自己的編碼格式對地址進行編碼,如果瀏覽器所使用編碼與伺服器採用編碼不一致,伺服器接收到的引數就會出現亂碼。在firefox,chrome下正常,ie下會出現亂碼。 解決方法:使用js encodeURI 對地址進行統一編碼,   &n

【詳】JAVA異常分類以及異常處理方法之間的區別以及聯絡

異常在日長開發中就像看見地鐵裡邊的人頭一樣的,放眼望去,齊刷刷的一片,各種異常。分佈範圍比較廣泛,很多人看到異常,就這表情 JAVA中異常: NullPointerException 空指標異常

NodeJs伺服器啟動後在瀏覽器訪問時中文顯示亂碼處理方法

建立一個叫 server.js 的檔案,並寫入以下程式碼: //使用 require 指令來載入 http 模組,並將例項化的 HTTP 賦值給變數 http var http=require('h

el表示式獲取url中文引數亂碼

1.解決方法:改變tomcat檔案server.xml標籤connector的編碼 <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8089" protocol="HTTP/1.1" red

java可變長引數的使用方法

Java中可變長引數的使用及注意事項 1. 可變長引數的定義 使用…表示可變長引數,例如 print(String... args){ ... } 在具有可變長引數的方法中可以把引數當成陣列使用,例如可以迴圈輸出所有的引數值。 print(

JAVAurl的特殊字元處理url轉碼解碼

在url中 , 只能使用url合法的字元 . 如果使用了非法字元來訪問某資源(如:+#等) , 就會導致資源訪問異常或失敗 . 同時原生url中也是不支援中文的 , 以百度為例 , 當你搜索了中文關鍵詞時 , 可以在url位址列中明顯的看出來中文被"編碼轉換了" . 本章暫

JSP中文及傳中文引數亂碼解決方法小結

在使用JSP的過程中,最使人頭疼的一個問題就是中文亂碼問題,以下是我在軟體開發中遇到的亂碼問題以及解決方法。   1、JSP頁面亂碼   這種亂碼的原因是應為沒有在頁面裡指定使用的字符集編碼,解決方法:只要在頁面開始地方用下面程式碼指定字符集編碼即可,   2、資料庫亂碼   這種亂碼會使你插入資料庫

Birt URL中文引數亂碼問題解決

比如 url = "<%=path%>/run?__report=reports/outByGroupDPwithMonth.rptdesign&birtTitle="+birtTitle+"&st="+stime+"&et="+etime

【工作筆記0010】asp.net後臺Request.QueryString獲取的url中文引數亂碼解決方案

通常頁面前端向後臺傳遞引數有兩種方法: 1.表單提交。 採用form標籤,將需要提交的內容放到form標籤裡面, 後臺用string str = Request.Form["標籤名字"].ToStri

javaurl中文轉碼問題

public static void main(String[] args){ try { System.out.println("中文");//1 System.out.println("中文".getBytes(

C++路徑的處理方法string

ble fin ase names 復制字符串 ostream 是否 substr() 新的 string 類提供字符串處理函數,利用這些函數,程序員可以在字符串內查找字符,提取連續字符序列(稱為子串),以及在字符串中刪除和添加。我們將介紹一些主要函數。 1.函數find_

抓包工具 Charles Response Contents中文亂碼解決方法

轉載自:https://www.cnblogs.com/mrjade/p/7677051.html用到Charles,下載最新的4.0.1版本,但是發生亂碼問題。百度好久才找到個靠譜的,那些說什麼在Info.plist檔案加字串的,都是假的,反正我是試了都沒用,這裡記下詳細的

java正則表達式基本用法

code ack acea print 表達式 劃線 跟著 以及 n) https://www.cnblogs.com/xhj123/p/6032683.html 正則表達式是一種可以用於模式匹配和替換的規範,一個正則表達式就是由普通的字符(例如字符a到z)以及特殊字符(元

java保留兩位小數4種方法轉載

cal AI maximum 保留兩位小數 tps 控制 .text int .html 喵喵最近經常遇到小數點保留的問題,轉載一篇Java裏面的幾種小數點位數控制方法。 這是轉載的原地址:https://www.cnblogs.com/chenrenshui/p/6128

Hive中文註釋亂碼解決方案2

seq cut exit sdn 都在 更多 net hdp 通過反射 本文來自網易雲社區作者:王潘安執行階段launchTask 回到Driver類的runInternal方法,看以下執行過程。在runInternal方法中,執行過程調用了execute方法。exe