1. 程式人生 > >java 頁面url傳值中文編碼&解碼

java 頁面url傳值中文編碼&解碼

URL引數中有中文值,傳到服務端,在用request.getParameter()方法,得到的常常會是亂碼。

這將涉及到字元解碼操作,我們在應用中常常會用new String(fieldType.getBytes("iso-8859-1"), "UTF-8");等類似的方法去解碼。但這種方式受具體應用環境限制,往往在應用部署環境發生改變時,還會出現中文亂碼。

在這裡介紹一種解決方法,可以在任何應用部署環境下通用。此方法分兩步:

1、在客戶端用escape(encodeURIComponent(fieldValue))方法編碼,例如:

title=escape(encodeURIComponent(title)); //這是js裡的函式

 url="<%=request.getContextPath()%>/print/printList!printTable.action?title="+title;

2、在服務端用java.net.URLDecoder.decode(getRequest().getParameter("title"),"UTF-8"),進行解碼。

-----------------------------------------------------------------------------

parent.window.location.href 和 iframe中src的亂碼問題。

要在這兩個url地址中傳中文,必須加編碼,然後再解碼。

編碼:encodeURI(encodeURI("包含中文的串"))

解碼:java.net.URLDecoder.decode("需要解碼的串","utf-8");

encodeURI方法是正確的,只是需要使用兩次encodeURI方法,例如encodeURI(encodeURI("中文"));第一次是把中文編碼成%xy的格式,第二次是對%xy中的%進行編碼,%編碼成%25。整個傳參過程大體應該是:提交頁面使用encodeURI(encodeURI("中文"))編碼,把最後的編碼結果%25xy傳遞給處理頁面的過程中,瀏覽器獲取URL地址(注意openModelDialog方法,瀏覽器獲取不到引數編碼)後解碼成%xy,然後把%xy傳遞給處理頁面,處理頁面使用URLDecoder.decode(request.getParameter("引數名"),"UTF-8");完成解碼。
總結:
1、漢字出現在URL路徑部分的時候不需要編碼解碼;
2、使用encodeURI進行2次編碼;
3、在openModelDialog()開啟的模式窗體裡沒辦法用request.getParameter正確獲取引數;

相關推薦

java 頁面url中文編碼&解碼

URL引數中有中文值,傳到服務端,在用request.getParameter()方法,得到的常常會是亂碼。 這將涉及到字元解碼操作,我們在應用中常常會用new String(fieldType.getBytes("iso-8859-1"), "UTF-8");等類似的方法

js url中文亂碼完美解決(JAVA)

div AR urldecode 更改 pos decode post 中文 解決亂碼 首先在你的jsp頁面這樣更改: var url="你要傳入的Action的位置&ipid="+ipid+"&keyWord="+key; 這裏的key是中文,從inp

js url中文亂碼之解決之道_javascript技巧

url=encodeURI(encodeURI(url)); //用了2次encodeURI 測試成功,第一次轉換沒有嘗試, 處理方法一。 js 程式程式碼:url=encodeURI(url);注意是整個URL 伺服器端的程式碼:String linename = new

jsp頁面之間URL中文亂碼,測試demo

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% String param = request.getPa

vue編碼解碼

第一步:傳值 編碼  encodeURIComponent() skip(){ this.$router.push({ path:'./channelPromotion?channelName='+'我是字 段'+'&&channelUrl='+e

jsp頁面中文出現亂碼的問題

有時在jsp頁面間進行傳值時會出現中文亂碼問題,它們一般是在中文值傳遞的過程對中文進行了編碼,所以造成接收到中文亂碼問題。 解決的思路有兩個: 其一是在傳值前就進行編碼操作,將中文進行字元編碼,使其變成非中文字元,如: var MyParam=$("#deptName").

java前臺向後臺中文亂碼問題解決

1:從jsp頁面向後臺傳值 jsp:<a href="<%/path%>/kqbg?search<%= URLEncoder.encode("口腔","gb2312")%>"></a> java: String str=req

url特殊字元編碼

為什麼需要Url編碼 通常如果一樣東西需要編碼,說明這樣東西並不適合傳輸。原因多種多樣,如Size過大,包含隱私資料,對於Url來說,之所以要進行編碼,是因為Url中有些字元會引起歧義。 Url編碼的原則就是使用安全的字元(沒有特殊用途或者特殊意義的可列印字元)去表

asp頁面url頁面亂碼問題以及用js獲得url中傳來引數

第一:在url中放入引數: var txtName = (“#” + name).val();          alert(txtName);(“#SelectFrame”).attr(“src”

URL帶加號“+”或者中文亂碼的解決方法

URL傳值帶加號“+”的問題的解決方法 今天在除錯客戶端向伺服器傳遞引數時,引數中的“+”全部變成了空格,原因是URL中預設的將“+”號轉義了。 解決方法如下: 方法一、修改客戶端,將客戶端帶“+”的引數中的“+”全部替換為‍“2B%”,這樣引數傳到伺服器

如何解決 jsp 中url中文亂碼問題

第一步:在tomcat 的server.xml檔案中設定web伺服器埠配製中加下面兩句: useBodyEncodingForURI="true"   URIEncoding="UTF-8" 第二步

java】的方式

運行 有意義 class new main 一個人 結果 參數傳遞 傳遞參數 【java】的傳值方式 當你問大多數程序員Java是傳值還是傳引用的時候,你可能會得到兩種答案之一: (1)Java傳遞原始類型數據時使用的是傳值方式;傳遞對象時則使用傳引用方式;Str

ASP.NET頁面之間的方式之QueryString(超詳細)

res p s orm font utf-8 但是 partial .aspx object QueryString Querystring也叫查詢字符串,這種頁面間傳遞數據是利用網頁地址URL。如果要從A頁面跳轉到B頁面,則可以用Request.Redirect(”B.a

ASP.NET頁面之間的方式之Application(個人整理)

eve security 使用 例子 如何 and services https 在線人數  Application Application變量在整個應用程序生命周期中都是有效的,類似於使用全局變量一樣,所以可以在不同頁面中對它進行存取。它和Session變量的區別在於,

ASP.NET頁面之間的方式之Session(個人整理)

lec 傳遞 button doctype http 參考 方式 創建 logs   Session Session在ASP.NET中,表示客戶端(Goggle,Firefox,IE等)與服務器端的會話,用來存儲特定會話信息,準確來說,是用來存儲特定用戶信息。當客戶端向服務

ASP.NET頁面之間的方式之Cookie(個人整理)

無意中 etime linq 首選項 ner www. ati 訪問 net   Cookie Cookie 提供了一種在 Web 應用程序中存儲用戶特定信息的方法。例如,當用戶訪問您的站點時,您可以使用 Cookie 存儲用戶首選項或其他信息。當該用戶再次訪問您的網站時,

js通過cookie對兩個沒有關系的jsp頁面進行

IT eva 有關 time bsp 關系 cape document 兩個   //Cookie取值   function readCookie (name)   {     var cookieValue = "";     v

vue插槽,也就是子頁面、父頁面相互的另一寫法

style def com data component rop 頁面 ret slot 父頁面: <template> <div class="parent"> <p>父組件</p> <child> &l

通過url的取方法

bstr www. new cap escape arc str sea regex 當前:url=www.baidu.com?id=2 id = GetQueryString(id)//2 function GetQueryString(name) { var reg =

mui跨頁面和取

記錄 dial .html right options xtra tom ng- 根據 最近在做一個基於mui框架的移動app、遇到跨頁面傳值的問題、在此做以記錄 mui.openWindow({ url:‘parkDeta