日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java使用URLDecoder和URLEncoder對(duì)中文字符進(jìn)行編碼和解碼

瀏覽:146日期:2022-08-28 15:19:44

摘要:

URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之間的相互轉(zhuǎn)換。在本文中,我們以使用URLDecoder解決GET請(qǐng)求中文亂碼問(wèn)題為場(chǎng)景說(shuō)明 URLDecoder/URLEncoder 的用法,并給出了 application/x-www-form-urlencoded MIME 字符串的編碼規(guī)則。

一. URLDecoder/URLEncoder 使用場(chǎng)景概述

URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之間的相互轉(zhuǎn)換。在介紹 application/x-www-form-urlencoded MIME 字符串之前,我們先考慮如下場(chǎng)景,如下圖所示:

java使用URLDecoder和URLEncoder對(duì)中文字符進(jìn)行編碼和解碼

我們知道,在我們向客戶端發(fā)起請(qǐng)求時(shí),瀏覽器會(huì)根據(jù)請(qǐng)求URL生成相應(yīng)的請(qǐng)求報(bào)文發(fā)送給服務(wù)器。在這個(gè)過(guò)程中,如果我們?cè)跒g覽器中的地址欄中所輸入的URL包含中文字符時(shí),瀏覽器首先會(huì)將這些中文字符進(jìn)行編碼然后再發(fā)送給服務(wù)器。實(shí)際上,瀏覽器會(huì)將它們轉(zhuǎn)換為 application/x-www-form-urlencoded MIME 字符串,如下圖所示:

java使用URLDecoder和URLEncoder對(duì)中文字符進(jìn)行編碼和解碼

更確切的,當(dāng)URL地址里包含非西歐字符的字符串時(shí),瀏覽器都會(huì)將這些非西歐字符串轉(zhuǎn)換成application/x-www-form-urlencoded MIME 字符串。在開發(fā)過(guò)程中,我們可能涉及將普通字符串和這種特殊字符串的相關(guān)轉(zhuǎn)換,這就需要使用 URLDecoder 和 URLEncoder類進(jìn)行實(shí)現(xiàn),其中:

URLDecoder類包含一個(gè)decode(String s,String enc)靜態(tài)方法,它可以將application/x-www-form-urlencoded MIME字符串轉(zhuǎn)成普通字符串; URLEncoder類包含一個(gè)encode(String s,String enc)靜態(tài)方法,它可以將普通字符串轉(zhuǎn)換成application/x-www-form-urlencoded MIME字符串。

下面程序示范了普通字符串轉(zhuǎn)與 application/x-www-form-urlencoded MIME 字符串之間的轉(zhuǎn)化。

public class URLDecoderTest { public static void main(String[] args) throws Exception { // 將application/x-www-form-urlencoded字符串轉(zhuǎn)換成普通字符串 // 其中的字符串直接從上圖所示窗口復(fù)制過(guò)來(lái),chrome 默認(rèn)用 UTF-8 字符集進(jìn)行編碼,所以也應(yīng)該用對(duì)應(yīng)的字符集解碼 System.out.println('采用UTF-8字符集進(jìn)行解碼:'); String keyWord = URLDecoder.decode('%E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6+Rico', 'UTF-8'); System.out.println(keyWord); System.out.println('n 采用GBK字符集進(jìn)行解碼:'); System.out.println(URLDecoder.decode('%E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6+Rico', 'GBK')); // 將普通字符串轉(zhuǎn)換成application/x-www-form-urlencoded字符串 System.out.println('n 采用utf-8字符集:'); String urlStr = URLEncoder.encode('天津大學(xué)', 'utf-8'); System.out.println(urlStr); System.out.println('n 采用GBK字符集:'); String urlStr2 = URLEncoder.encode('天津大學(xué)', 'GBK'); System.out.println(urlStr2); }}/* Output: 采用UTF-8字符集進(jìn)行解碼: 天津大學(xué) Rico 采用GBK字符集進(jìn)行解碼: 澶╂觸澶у? Rico 采用utf-8字符集: %E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6 采用GBK字符集: %CC%EC%BD%F2%B4%F3%D1%A7 *///:~

特別地,僅包含西歐字符的普通字符串和application/x-www-form-urlencoded MIME字符串無(wú)須轉(zhuǎn)換,而包含中文字符的普通字符串則需要轉(zhuǎn)換,轉(zhuǎn)換的方法是每個(gè)中文字符占2個(gè)字節(jié),每個(gè)字節(jié)可以轉(zhuǎn)換成2個(gè)十六進(jìn)制的數(shù)字,所以每個(gè)中文字符將轉(zhuǎn)換成“%XX%XX”的形式。當(dāng)然,采用不同的字符集時(shí),每個(gè)中文字符對(duì)應(yīng)的字節(jié)數(shù)并不完全相同,所以使用URLEncoder和URLDecoder進(jìn)行轉(zhuǎn)換時(shí)也需要指定字符集。特別地,字符串應(yīng)以同樣的字符集進(jìn)行編碼和解碼,否則會(huì)產(chǎn)生意想不到的結(jié)果,如上述程序示例所示。

二. 解決GET請(qǐng)求中文亂碼問(wèn)題

URLDecoder的一個(gè)應(yīng)用場(chǎng)景就是解決GET請(qǐng)求的中文亂碼問(wèn)題,如下述代碼所示:

<%@page import='java.net.URLDecoder'%><%@ page language='java' import='java.util.*' pageEncoding='UTF-8'%><html><head> <title>Test</title></head><body> <% String param1 = request.getQueryString(); String param2 = URLDecoder.decode(param1, 'utf-8'); out.print(param2.split('=')[1] + '<br>'); %></body></html>

特別需要注意的是,使用此方式對(duì)GET請(qǐng)求參數(shù)進(jìn)行解碼時(shí),我們必須先對(duì) request.getQueryString 方法的返回值(例如,“name=摩羯西門吹雪”)進(jìn)行解碼,然后再?gòu)闹腥〕鑫覀兯枰膮?shù)值。如果先取出參數(shù)值,然后再對(duì)參數(shù)值進(jìn)行解碼,則我們將得到亂碼,如下圖所示:

java使用URLDecoder和URLEncoder對(duì)中文字符進(jìn)行編碼和解碼

此外,對(duì)于包含中文字符的POST請(qǐng)求參數(shù),我們只需在獲取請(qǐng)求參數(shù)前通過(guò)以下代碼語(yǔ)句進(jìn)行轉(zhuǎn)碼即可:

request.setCharacterEncoding('utf-8');

三. URLEncoder & URLDecoder

對(duì) String 編碼時(shí),使用以下規(guī)則:

字母、數(shù)字和字符, “a” 到 “z”、”A” 到 “Z” 和 “0” 到 “9” 保持不變; 特殊字符 “.”、”-“、”*” 和 “_” 保持不變; 空格字符 ” ” 轉(zhuǎn)換為一個(gè)加號(hào) “+”。

除此之外,所有的其他字符都是不安全的。因此需要使用一些編碼機(jī)制將它們轉(zhuǎn)換為一個(gè)或多個(gè)字節(jié),每個(gè)字節(jié)用一個(gè)包含 3 個(gè)字符的字符串 “%xy” 表示,其中 xy 為該字節(jié)的兩位十六進(jìn)制表示形式,推薦的編碼機(jī)制是 UTF-8。例如,使用 UTF-8 編碼機(jī)制,字符串 “The string ü@foo-bar” 將轉(zhuǎn)換為 “The+string+%C3%BC%40foo-bar”,因?yàn)樵?UTF-8 中,字符 ü 編碼為兩個(gè)字節(jié),C3 (十六進(jìn)制)和 BC (十六進(jìn)制),字符 @ 編碼為一個(gè)字節(jié) 40 (十六進(jìn)制)。

 關(guān)于 URLDecoder 類的使用,轉(zhuǎn)換過(guò)程正好與 URLEncoder 類使用的過(guò)程相反,此不贅述。

關(guān)于JSP中文亂碼更多的介紹,包括 頁(yè)面亂碼、參數(shù)亂碼、表單亂碼、源文件亂碼 等知識(shí),見我的另外兩篇博客:《JSP中文亂碼問(wèn)題終極解決方案(上)》 和 《JSP中文亂碼問(wèn)題終極解決方案(下)》。

引用

使用URLDecoder和URLEncoder對(duì)中文進(jìn)行處理

到此這篇關(guān)于java使用URLDecoder和URLEncoder對(duì)中文字符進(jìn)行編碼和解碼的文章就介紹到這了,更多相關(guān)java 文字符編碼解碼內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美1区2区3区| 国产日韩一区二区三免费高清 | 91九色综合| 激情婷婷欧美| 激情国产在线| 成人av三级| 日本不良网站在线观看| 精品色999| 久久精品天堂| 久久精品一区二区国产| 国产日韩一区二区三免费高清 | 日韩国产一区| 热三久草你在线| 成人黄色av| se01亚洲视频| 91超碰国产精品| 丝袜美腿成人在线| 日本亚州欧洲精品不卡| 日本麻豆一区二区三区视频| 日韩精品乱码av一区二区| 日韩福利视频一区| 牛牛精品成人免费视频| 久久国产欧美日韩精品| 日韩精品一区二区三区中文 | 日韩三区免费| 欧美在线影院| 青青伊人久久| 黄色aa久久| 亚洲少妇诱惑| 国产精品日韩精品中文字幕| 日韩成人三级| 日韩在线一二三区| 国产免费av一区二区三区| 国产一区二区三区精品在线观看| 欧美手机在线| 青青草精品视频| 国产一区二区三区不卡视频网站 | 美腿丝袜在线亚洲一区| 久草免费在线视频| 国产精品毛片| 国产美女视频一区二区| 激情自拍一区| 亚洲乱码视频| 亚洲二区在线| 国产精品nxnn| 国产视频一区三区| 国产成人免费av一区二区午夜| 午夜电影亚洲| 国产日韩一区| 国产精品日韩| 悠悠资源网久久精品| 国产精品一区二区免费福利视频 | 免费国产亚洲视频| 日本午夜大片a在线观看| 久久国产精品免费一区二区三区| 国产尤物精品| 激情综合自拍| 99久久亚洲精品| 国产一区二区三区久久久久久久久| 最新亚洲激情| 色偷偷色偷偷色偷偷在线视频| 一区二区亚洲精品| 亚洲91精品| 色综合视频一区二区三区日韩| 97精品中文字幕| 欧美一级全黄| 国产日韩欧美一区| 免费欧美在线视频| 喷白浆一区二区| 国产专区精品| 91综合视频| 国产精品啊啊啊| 欧美日一区二区在线观看| 亚洲免费影院| 亚洲激情二区| 免费黄网站欧美| 91国语精品自产拍| 国产在线一区不卡| 麻豆一区在线| 久久97久久97精品免视看秋霞| 国产成人精品福利| 久久影院资源站| 麻豆国产精品777777在线| 久热re这里精品视频在线6| 久久精品影视| 天堂日韩电影| 国产免费播放一区二区| 国产精品久久久久久久久久久久久久久 | 狠狠干综合网| 麻豆精品在线观看| 国产精品一区二区精品视频观看| 国产一区91| 欧美特黄一区| 九九在线精品| 国产精品1区| 高清精品久久| 特黄毛片在线观看| 欧美日韩中文一区二区| 99综合视频| 精品中文字幕一区二区三区四区| 视频一区欧美日韩| 日韩精品欧美大片| 国产精品久久乐| 久久国产精品美女| 日韩.com| 亚洲午夜久久| 美女网站一区| 蜜桃久久精品一区二区| 欧美一区影院| 国产精品久久久久蜜臀| av亚洲免费| 欧美a级一区二区| 久久久久美女| 国产精品日韩| 成人高清一区| 亚洲精品动态| 影音先锋久久| 免费在线日韩av| 亚洲少妇诱惑| 国产精品日韩精品中文字幕| 黄色网一区二区| 日韩精品午夜视频| 久久一区二区三区喷水| 国产精品啊啊啊| av一区二区高清| 久久久久一区| 欧美经典一区| 亚洲日产国产精品| 欧美色图一区| 久久久精品午夜少妇| 日韩黄色免费网站| 狠狠色狠狠色综合日日tαg| 久久国产欧美日韩精品| 成人片免费看| 欧美国产一级| 天堂久久av| 蘑菇福利视频一区播放| 欧美精选视频一区二区| 精品视频在线你懂得| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩在线看片| 精品国产精品国产偷麻豆| 精品视频一区二区三区四区五区 | 丝袜亚洲精品中文字幕一区| 91国内精品| 中文字幕av一区二区三区人| 亚洲综合精品| 国产一区 二区| 中文字幕一区二区三区日韩精品 | 精品三级av| 久久中文字幕一区二区三区| 日韩高清电影免费| 日本久久二区| 午夜一级在线看亚洲| 亚洲一区二区三区高清| 久久国产直播| 伊人影院久久| 久久精品国产99| 黑人精品一区| 欧美成人基地 | 国产精品videossex久久发布 | 精品三级在线观看视频| 亚洲乱码一区| 91欧美日韩在线| 精品一区不卡| 国产美女视频一区二区| 欧美日韩伊人| 国产精品va视频| 欧美日韩免费观看一区=区三区| 久久天堂av| 免费看欧美美女黄的网站| 欧美亚洲三级| 激情欧美国产欧美| 国产精品久久久久9999高清| zzzwww在线看片免费| 日韩一级网站| 九九九精品视频| 男女男精品视频网| 麻豆精品少妇| 香蕉久久国产| 国产aⅴ精品一区二区三区久久| 私拍精品福利视频在线一区| 奶水喷射视频一区| 老牛国内精品亚洲成av人片| 欧洲av一区二区| 亚洲精品电影| 欧美www视频在线观看| 国产日韩亚洲| 亚洲欧美日韩高清在线| 麻豆精品一区二区综合av| 丝袜a∨在线一区二区三区不卡 | 日韩欧美中文字幕一区二区三区 | 国产精品三级| 日韩精品视频网| 91久久亚洲| 美女av在线免费看| 欧美一区二区三区久久精品| 欧美一级网址| 亚洲欧美在线专区| 亚洲激情中文在线|