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

您的位置:首頁技術文章
文章詳情頁

java使用URLDecoder和URLEncoder對中文字符進行編碼和解碼

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

摘要:

URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之間的相互轉換。在本文中,我們以使用URLDecoder解決GET請求中文亂碼問題為場景說明 URLDecoder/URLEncoder 的用法,并給出了 application/x-www-form-urlencoded MIME 字符串的編碼規則。

一. URLDecoder/URLEncoder 使用場景概述

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

java使用URLDecoder和URLEncoder對中文字符進行編碼和解碼

我們知道,在我們向客戶端發起請求時,瀏覽器會根據請求URL生成相應的請求報文發送給服務器。在這個過程中,如果我們在瀏覽器中的地址欄中所輸入的URL包含中文字符時,瀏覽器首先會將這些中文字符進行編碼然后再發送給服務器。實際上,瀏覽器會將它們轉換為 application/x-www-form-urlencoded MIME 字符串,如下圖所示:

java使用URLDecoder和URLEncoder對中文字符進行編碼和解碼

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

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

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

public class URLDecoderTest { public static void main(String[] args) throws Exception { // 將application/x-www-form-urlencoded字符串轉換成普通字符串 // 其中的字符串直接從上圖所示窗口復制過來,chrome 默認用 UTF-8 字符集進行編碼,所以也應該用對應的字符集解碼 System.out.println('采用UTF-8字符集進行解碼:'); 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字符集進行解碼:'); System.out.println(URLDecoder.decode('%E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6+Rico', 'GBK')); // 將普通字符串轉換成application/x-www-form-urlencoded字符串 System.out.println('n 采用utf-8字符集:'); String urlStr = URLEncoder.encode('天津大學', 'utf-8'); System.out.println(urlStr); System.out.println('n 采用GBK字符集:'); String urlStr2 = URLEncoder.encode('天津大學', 'GBK'); System.out.println(urlStr2); }}/* Output: 采用UTF-8字符集進行解碼: 天津大學 Rico 采用GBK字符集進行解碼: 澶╂觸澶у? 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字符串無須轉換,而包含中文字符的普通字符串則需要轉換,轉換的方法是每個中文字符占2個字節,每個字節可以轉換成2個十六進制的數字,所以每個中文字符將轉換成“%XX%XX”的形式。當然,采用不同的字符集時,每個中文字符對應的字節數并不完全相同,所以使用URLEncoder和URLDecoder進行轉換時也需要指定字符集。特別地,字符串應以同樣的字符集進行編碼和解碼,否則會產生意想不到的結果,如上述程序示例所示。

二. 解決GET請求中文亂碼問題

URLDecoder的一個應用場景就是解決GET請求的中文亂碼問題,如下述代碼所示:

<%@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>

特別需要注意的是,使用此方式對GET請求參數進行解碼時,我們必須先對 request.getQueryString 方法的返回值(例如,“name=摩羯西門吹雪”)進行解碼,然后再從中取出我們所需要的參數值。如果先取出參數值,然后再對參數值進行解碼,則我們將得到亂碼,如下圖所示:

java使用URLDecoder和URLEncoder對中文字符進行編碼和解碼

此外,對于包含中文字符的POST請求參數,我們只需在獲取請求參數前通過以下代碼語句進行轉碼即可:

request.setCharacterEncoding('utf-8');

三. URLEncoder & URLDecoder

對 String 編碼時,使用以下規則:

字母、數字和字符, “a” 到 “z”、”A” 到 “Z” 和 “0” 到 “9” 保持不變; 特殊字符 “.”、”-“、”*” 和 “_” 保持不變; 空格字符 ” ” 轉換為一個加號 “+”。

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

 關于 URLDecoder 類的使用,轉換過程正好與 URLEncoder 類使用的過程相反,此不贅述。

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

引用

使用URLDecoder和URLEncoder對中文進行處理

到此這篇關于java使用URLDecoder和URLEncoder對中文字符進行編碼和解碼的文章就介紹到這了,更多相關java 文字符編碼解碼內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久成人国产| 国产成人免费| 久久伊人国产| 国产精品片aa在线观看| 国产在线|日韩| 夜鲁夜鲁夜鲁视频在线播放| 成人在线免费观看网站| 精品视频网站| 久久久久久久欧美精品| 亚洲精一区二区三区| 亚州av日韩av| 久久久水蜜桃av免费网站| 精品成人免费一区二区在线播放| 精品一区视频| 国产精品22p| 久久精品二区亚洲w码| 成人污污视频| 国产拍在线视频| 色天使综合视频| 亚洲天堂久久| 亚洲中字黄色| 日本综合精品一区| 国产精品嫩模av在线| 精品一区二区三区视频在线播放 | 欧美日韩va| 牛牛精品成人免费视频| 日产午夜精品一线二线三线| 欧美久久天堂| 国产精品老牛| 中文字幕免费精品| 国产精品久久久久久模特| 精品美女在线视频| 免费久久精品| 青草国产精品| 日韩在线综合| 亚洲欧美久久精品| 亚洲风情在线资源| 三级在线观看一区二区| 亚洲精品欧洲| 精品免费视频| 日韩制服丝袜先锋影音| 免费日韩成人| 蜜桃久久精品一区二区| 麻豆久久一区二区| 亚洲欧美日韩综合国产aⅴ| 91精品国产一区二区在线观看 | 亚洲a级精品| 日韩综合精品| 欧美亚洲tv| 国产精品丝袜xxxxxxx| 久久精品国产网站| 九色精品91| 精品一区二区三区四区五区| 久久夜色精品| 精品中文一区| 97se综合| 国产精品久久久久久久久久齐齐| 欧美不卡高清| www.51av欧美视频| 久久久久伊人| 国产精品视频首页| 国产欧美日韩一级| 日日夜夜免费精品视频| 午夜精品婷婷| 激情综合婷婷| 欧美精品不卡| 午夜一级在线看亚洲| 欧美国产91| 亚洲特级毛片| 国产一区欧美| 久久国产中文字幕| 91看片一区| 毛片在线网站| 啪啪国产精品| 激情自拍一区| 在线一区免费| 亚洲免费专区| 青青草精品视频| 国产精品九九| 免费一级欧美片在线观看网站 | 亚洲精品三级| 四虎在线精品| 91精品国产经典在线观看| 欧美专区18| 亚洲久久一区| 国产精品地址| 亚洲黄色中文字幕| 99久久久久久中文字幕一区| 亚洲激情国产| 国产精品亚洲一区二区在线观看| 国产精品sm| 亚洲日本在线观看视频| 国产欧美亚洲一区| 人在线成免费视频| 亚洲一区二区成人| 91精品国产福利在线观看麻豆| 久久久久蜜桃| 日韩国产一二三区| 亚洲欧洲美洲av| 天堂av在线一区| 久久影院一区二区三区| 国产真实久久| 国产精品欧美三级在线观看 | 国精品一区二区三区| 亚洲人亚洲人色久| 精品久久91| 久久国产影院| 欧美久久香蕉| 日韩中文影院| 国产精品久久久久av蜜臀| 欧美网站在线| bbw在线视频| 国产精品最新| 亚洲无线观看| 在线日韩中文| 岛国av免费在线观看| 日韩动漫一区| 99国内精品| av综合电影网站| 美女视频黄免费的久久| 亚洲三级网站| 91精品xxx在线观看| 欧美日韩99| 亚洲乱码久久| 亚洲色诱最新| 亚洲婷婷免费| 精品国产成人| 国产精品巨作av| 日本亚洲最大的色成网站www| 免费精品视频| 香蕉精品视频在线观看| 中文字幕高清在线播放| 中文字幕在线看片| av高清不卡| 激情六月综合| 欧美日韩三区| 在线亚洲激情| 91精品国产调教在线观看 | 国产在线一区不卡| 99精品综合| 蜜臀精品一区二区三区在线观看| 亚洲欧美日本国产专区一区| 久久亚洲一区| 欧美欧美黄在线二区| 国产一区国产二区国产三区 | 亚洲综合三区| 日韩精品五月天| 精品91福利视频| 中日韩男男gay无套| 国产伦精品一区二区三区千人斩| 精品国产乱码久久久久久樱花| 蜜臀国产一区| 蜜臀国产一区二区三区在线播放 | 久久精品国产精品亚洲毛片| 午夜欧美精品| 国产精品亚洲产品| 国产精品激情| 国产91一区| 国产乱码精品一区二区三区亚洲人| 精品视频在线你懂得| 激情婷婷综合| 亚洲精品一二三**| 国产精品自拍区| 亚洲四虎影院| 日本午夜精品久久久| 91精品国产乱码久久久久久久| 97久久亚洲| 亚洲免费成人av在线| 欧美日韩日本国产亚洲在线| 国产精选在线| 国产美女高潮在线| 亚洲福利精品| 青草久久视频| 久久中文字幕二区| 亚洲精品中文字幕99999| 国产91在线播放精品| 日韩精品一区第一页| 日韩在线观看一区| 国产日韩亚洲| 日韩专区在线视频| 激情视频网站在线播放色| 日韩欧美高清一区二区三区| 国产在线|日韩| 精品国产亚洲一区二区三区在线| 水蜜桃久久夜色精品一区的特点| 九九九精品视频| 日韩黄色在线观看| 亚洲色诱最新| 99热国内精品| 国产精品流白浆在线观看| 尤物精品在线| 国产欧美一区二区三区精品酒店| 日本色综合中文字幕| 中文亚洲欧美| 亚洲高清激情| 久久精品亚洲欧美日韩精品中文字幕| 国产精品白丝一区二区三区| 国产欧美91| 国产精品黄色片| 你懂的亚洲视频|