1. 程式人生 > >前臺頁面utf-8,通過url傳中文引數的解決方法

前臺頁面utf-8,通過url傳中文引數的解決方法

由於前臺jsp頁面用到ajax,預設使用utf8編碼格式,但另一個連結中又需要通過url傳含有中文的引數,jboss中的server.xml中配置的urlEncoding是GBK(由於專案原因不能更改),故在原始寫法的傳參過程中,中文會變成亂碼,以下提供解決這種亂碼的方法。
對於url要傳的中文引數進行兩次編碼(注意是兩次),即encodeURI(encodeURI(val))

傳到後臺action中通過解碼獲取中文數:java.net.URLDecoder.decode(request.getParameter(“val”),”UTF-8”)

以下再記錄幾個解決亂碼的方法(網上摘抄):
Java程式碼

一、對傳遞過來的引數進行編碼轉換  

  key=new String(key.getBytes("ISO-8859-1"),"UTF-8");  

其中ISO-8859-1是tomcat預設的編碼型別  

缺點:當伺服器的編碼改成GBK  該方法就會失去作用 當然改成  

key=new String(key.getBytes("GBK"),"UTF-8");  

二、修改伺服器(tomcat的編碼)  

server.xml  

<Connector port="8080" protocol="HTTP/1.1"  

               connectionTimeout="20000"
redirectPort="8443" URLEncoding=UTF8 /> 缺點:當tomcat編碼進行修改 又會出現問題 一、 二、共同的缺點就是依賴於Tomcat的編碼環境 三、先將中文進行編碼後再傳遞(推薦) 1、Js方式: 需要進行兩次編碼 客戶端     Var key=encodeURI(”中中”); Key= encodeURI(key); 伺服器端 因為伺服器端在獲取客戶端傳遞過來的引數時已經進行了一次解碼 所以我們自己只需解一次碼就行了 java.net.URLDecoder.decode(傳過來的引數); 2
、利用Struts2的<s:a>標籤 <s:a action=””> <s:param name="key" value="%{@[email protected](key, 'utf-8')}"></s:param> </s:a> Sturst2預設不允許直接用OGNL表示式呼叫方法 所以需要在Struts.Xml加入 <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>

相關推薦

前臺頁面utf-8通過url中文引數解決方法

由於前臺jsp頁面用到ajax,預設使用utf8編碼格式,但另一個連結中又需要通過url傳含有中文的引數,jboss中的server.xml中配置的urlEncoding是GBK(由於專案原因不能更改),故在原始寫法的傳參過程中,中文會變成亂碼,以下提供解決

JS獲取頁面通過URL引數

1.從一個頁面通過url將引數傳遞給另一個頁面 www.xxx.com/xxx.html?key=value //前面指定要傳值的目標地址,value為引數 2.js獲取url中傳遞的引數

Web專案中前端頁面通過URL中文或 # 特殊字元到後臺出現亂碼解決方案

      對於剛入行新手來說碰到URL傳遞中文資料到後臺出現亂碼或是傳遞包含特使符號‘#’後端獲取不到的情況是比較頭疼的事,這裡我就告訴你這兩個的解決的方式;        1.URL傳遞中文     前端頁面:中文字串用 encodeURI(encodeURI(

JSP頁面通過URL傳遞中文引數出現中文亂碼問題

做專案時遇到這個問題 問題描述:通過點選這個引數名並進行跳轉control層,進行引數接受並處理。${cs.name}裡面包含中文 <a href="${pageContext.request.contextPath}/recommend_navCategory?name=${cs.n

JSP頁面通過URL傳遞中文引數出現中文亂碼的解決方法

JSP頁面: var url ="AddPatrolAjax?domain="+domain.value;//domain.value含有中文 伺服器端: String domain = new Str

JS通過Url傳遞中文引數c#獲取引數

最近遇到一個JS通過Url傳遞中文引數,c#獲取中文引數亂碼的問題。解決方法如下: 正確的方法是: JS var reqUrl = document.location + "?key=" + encodeURI(keyword); C# string keyword =

URL中文引數導致亂碼的解決方案之encodeURI

[size=large]       通過URL傳中文引數時,在服務端後臺獲取到的值往往會出現亂碼。解決方案有很多種。本文介紹如何通過encodeURI來解決中文亂碼問題。 首先,在前端頁面準備引數的時候,需要對中文引數進行encode處理: var url = 'He

讀取文字出現 鍩 * 系列亂碼錯誤(UTF-8 BOM問題)的原因及解決方法

現象 讀取文字時經常會出現鍩*系列錯誤。 例1:鍩縣,其實開頭的文字是h,http被顯示為鍩縣ttp 例2:鍩縫,其實開頭的文字是p,public被顯示為鍩縫ulic 只要文字的首字母為鍩的都屬於這類錯誤,在Python、Java、PHP等等使用過程中都

JSP內建物件(包括request和response)以及解決url中文引數出現亂碼問題

一、內建物件簡介1、JSP內建物件是Web容器建立的一組物件,不使用new關鍵字就可以使用的內建物件。例如:out物件 <% int[] value={60,70,80}; for(int i:value){ out.println

c#導出文件文件名中文亂碼解決方法

urn ont 導出 com filename tps 中文 str 文件名 public string clFielName(string fileName) { System.Web.HttpContext curContext = Sy

jquery $("#form").serialize()中文亂碼解決方法

jquery form表單.serialize()序列化後中文亂碼問題原因及解決 原因:.serialize()自動呼叫了encodeURIComponent方法將資料編碼了  解決方法:呼叫decodeURIComponent(XXX,true);將資料解碼  例如

通過URL參數然後第二個頁面需要獲取參數

banner chan rom base its [0 val success escape /** * 方法說明:通過url參數鍵值名稱獲取參數的值 * @method getQueryString * @param name

jq、js獲取一個頁面中的ajax資料到另一個頁面顯示(通過url參方式)

做專案遇到了頁面之間傳輸資料的問題,特別是第一個頁面的資料是使用ajax顯示的,當點選ajax中append的li的時候,開啟另一個頁面,將第一個頁面的資料顯示在另一個頁面上,具體情況如下: 一、這是第一個頁面中的js程式碼: //顯示所有該使用者的歌單 function showMusicMe

通過url參時要注意不能有空格否則會發生意想不到的問題

在練習servlet,需要寫一個使用超連結轉到下一個頁面並且攜帶一個引數過去。 我選擇使用url把引數傳遞過去,但會報404錯誤,連下一個頁面都找不到了,通過嘗試發現是問號與前面有空格的問題,把空格去

頁面jsp編碼utf-8傳遞中文引數到java後臺出現亂碼

1、前臺頁面jsp的編碼是contentType=”text/html; charset=utf-8” 後臺編碼是gdk,傳遞中文引數時出現亂碼,後臺接收到傳遞的引數時需要進行轉換才能解決亂碼問題。 new String(this.getParameter(

使用iframe如何通過url參把資料從一個頁面到另一個頁面(contentWindow)

最近做的專案使用Iframe,使用起來感覺挺方便的。但是唯一感覺不開森的就是使用Iframe後,頁面的位址列的是不改變的哦,那麼我們如何通過url將資料從一個頁面傳到另一個頁面? <div style="background-color: trans

編碼格式簡介:ASCII碼、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8BOM頭

family 用兩個 圖片 and 正是 全球化 asc 即使 little 編碼格式簡介:ASCII碼、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM頭 二進制: 只有0和1。 十進制、十六進制、八進制: 計算機其實挺笨的,它只

Webservice報錯客戶端發現響應內容類型為“application/json;charset=UTF-8但應為“text/xml”。

san 有關 棧跟蹤 手動 cat mil not soap con 控制臺對接Webservice正常,同樣的方法在Web項目上報錯: 客戶端發現響應內容類型為“application/json;charset=UTF-8”,但應為“

通過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 =

Vue中通過URL

本文采用的為使用query; 傳參: this.$router.push({ path: '/urlpass', query: { id: 'a' } }) 取值: