婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > JSP對URL鏈接中的中文亂碼處理方法總結(jié)

JSP對URL鏈接中的中文亂碼處理方法總結(jié)

熱門標(biāo)簽:聊城智能電銷機(jī)器人外呼 泰州泰興400電話 怎么申請 南京新思維電話機(jī)器人 好操作的電話機(jī)器人廠家 企業(yè)怎么在聯(lián)通申請400電話 地圖標(biāo)注市場怎么樣 南昌市地圖標(biāo)注app 如何用中國地圖標(biāo)注數(shù)字點(diǎn) 百度地圖添加標(biāo)注圖標(biāo)樣式

IE缺省對URL后面的參數(shù)是不編碼發(fā)送的,但是Tomat缺省是按ISO8859-1來進(jìn)行URL編碼的,因此才會出錯。

方法一:

對URL鏈接進(jìn)行二次編碼:

a onclick="javascript:window.open(encodeURI(encodeURI('./DispatchAction.do?efFormEname=FKRY0001code_type=中文參數(shù)')))">測試/a>

或者單獨(dú)對參數(shù)進(jìn)行二次編碼:

var code_type = "中文參數(shù)";
code_type = encodeURI(code_type); 
code_type = encodeURI(code_type);
window.open("./DispatchAction.do?efFormEname=FKRY0001code_type="+code_type);
Service:
String code_type = request.getParameter("code_type");
//這句話一定要寫,因?yàn)槿绻粚懙脑捑幋a就是%E5%A6%88%
code_type = java.net.URLDecoder.decode(code_type,"UTF-8");

有人提出為什么要在客戶端對字符串重復(fù)編碼兩次呢?

如果因?yàn)轫?xiàng)目需要,不能指定容器使用何種編碼規(guī)則來解碼提交的參數(shù),比如:需要接收來自不同頁面,不地編碼的參數(shù)內(nèi)容時。 (又或者是開發(fā)人員被這有點(diǎn)復(fù)雜的東西搞得暈頭轉(zhuǎn)向,不懂得如何正確的去做好這接收參數(shù)的工作)

這個時候,在客戶端對參數(shù)進(jìn)行二次編碼,可以有效的避開“提交多字節(jié)字符”的這個棘手問題。

因?yàn)榈谝淮尉幋a,你的參數(shù)內(nèi)容便不帶有多字節(jié)字符了,成了純粹的 Ascii 字符串。(這里把編第一次的結(jié)果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不帶有多字節(jié)字符的)

再編一次后,提交,接收時容器自動解一次(容器自動解的這一次,不管是按 GBK 還是 UTF-8 還是 ISO-8859-1 都好,都能夠正確的得到 [STR_ENC1])

然后,再在程序中實(shí)現(xiàn)一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder.decode(***, "UTF-8"))就可以得到想提交的參數(shù)的原值。

簡單來說,就是Tomcat服務(wù)器會自動幫你做一次URLDecode,再加上你自己在Service代碼里面寫的URLDecode,一共就是兩個Decode了。既然要兩次Decode,當(dāng)然就需要兩次Encode了。或許你會問,干脆只Encode一次,然后在java代碼里不Decode,呵呵,這個也是不行的,這其實(shí)也就是為什么要進(jìn)行兩次Encode的原因吧。

方法二:(經(jīng)測試不支持IE8)

http://xxx.do?ptname=中文參數(shù)
String strPtname = request.getParameter("ptname");
strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8");

方法三:

%@ page contentType="text/html;charset=gb2312" %>
a href="ds.jsp?url=%=java.net.URLEncoder.encode("編碼的是這里","GB2312")%>">點(diǎn)擊這里/a>
%
//request.setCharacterEncoding("GBK");
if(request.getParameter("url")!=null)
{
str=request.getParameter("url");
str=java.net.URLDecoder.decode(str,"GB2312");
str=new String(str.getBytes("ISO-8859-1"));
out.print(str);
}
%>

方法四:
Tomcat中設(shè)置server.xml中的Connector熟悉URIEncoding="UTF-8",確保解碼格式與編碼格式統(tǒng)一。

您可能感興趣的文章:
  • jsp用過濾器解決中文亂碼問題的方法
  • JSP利用過濾器解決request中文亂碼問題
  • JSP頁面中超鏈接傳遞中文參數(shù)出現(xiàn)亂碼問題解決方法
  • JSP中文亂碼常見3個例子及其解決方法
  • 分享JSP中文亂碼解決方法
  • JSP頁面?zhèn)鲄⒊霈F(xiàn)中文亂碼的解決方案
  • jsp之間傳參數(shù)接受中文有亂碼問題解決方法
  • jsp地址欄傳中文顯示亂碼解決方法分享
  • JSP出現(xiàn)中文亂碼問題解決方法詳解

標(biāo)簽:白銀 烏蘭察布 臨汾 銅川 吉林 自貢 山南 開封

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JSP對URL鏈接中的中文亂碼處理方法總結(jié)》,本文關(guān)鍵詞  JSP,對,URL,鏈接,中的,中文,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JSP對URL鏈接中的中文亂碼處理方法總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于JSP對URL鏈接中的中文亂碼處理方法總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 宣武区| 尼木县| 泗水县| 百色市| 丘北县| 泰来县| 历史| 三亚市| 沂南县| 永新县| 小金县| 大宁县| 广安市| 女性| 信宜市| 德令哈市| 双柏县| 厦门市| 汝阳县| 宜黄县| 绥德县| 周宁县| 建昌县| 安平县| 沙雅县| 桂平市| 盐城市| 霍林郭勒市| 瑞丽市| 望江县| 新巴尔虎左旗| 淳化县| 西乌珠穆沁旗| 久治县| 祁连县| 枣强县| 双鸭山市| 浙江省| 建宁县| 江陵县| 天峨县|