urlEncoder和urlDecoder的作用和使用
URLEncoder到底是干什么用的??
都說是對form表單里的請求編碼解碼用的,但是為什么在寫中文文件下載的時候也用到了。
就是說國際通用的編碼對中文支持不好,所以需要對著玩意進行轉換。
因為中文讀取的時候你不給一個編碼,它可能就用別的編碼(不一定適合中文)就會導致亂碼,所以就要寫明編碼了。
HTML 格式編碼的實用工具類。該類包含了將 String 轉換為 application/x-www-form-urlencoded MIME 格式的靜態方法 一般是對中文編碼用的,比如get方式提交表單,如果有中文,常需要用該類對其編碼。 地址欄中,常能看到像“亂碼”的東東,有些就是該類對中文編碼后的結果
URLEncoder的作用
URLEncoder是什么
是HTML 格式編碼的實用工具類。該類包含了將 String 轉換為 application/x-www-form-urlencoded MIME 格式的靜態方法。
對 String 編碼時,使用以下規則:
- 字母數字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不變。
- 特殊字符 “.”、"-"、"*" 和 "_"保持不變。
- 空格字符 " " 轉換為一個加號 “+”。
- 所有其他字符都是不安全的,因此首先使用一些編碼機制將它們轉換為一個或多個字節。然后每個字節用一個包含 3 個字符的字符串 "%xy"表示,其中 xy 為該字節的兩位十六進制表示形式。推薦的編碼機制是 UTF-8。
為什么需要URLEncoder
在URI的最初設計時,希望能通過書面轉錄,因此URI的構成字符必須是可寫的ASCII字符。在這些可書寫的字符里,由于一些字符在不同操作系統的編碼有不同的解析,被包含在“不安全字符”之中,要格外注意。
那哪些字符是需要轉化的呢?
這些字符都是不可打印的,自然需要進行轉化。
這些字符自然是非法的字符范圍。轉化也是理所當然的了。
很明顯最常見的就是“&”了,這個如果出現在url中了,那你認為是url中的一個字符呢,還是特殊的參數分割用的呢?
例如:空格。為了防止引起歧義,需要被轉化為“+”。
url轉義其實也只是為了符合url的規范。因此,URLEncoder只是為了url中一些非ascii字符,可以正確無誤的被傳輸。
URLEncoder怎么使用
//使用指定的編碼機制將字符串轉換為 application/x-www-form-urlencoded 格式。此方法提供了獲取不安全字節字符的編碼方案。 public static String encode(String s, String enc) throws UnsupportedEncodingExceptionurlEncoder和urlDecoder的作用和使用
1.URLEncoder.encode(String s, String enc)
使用指定的編碼機制將字符串轉換為 application/x-www-form-urlencoded 格式
URLDecoder.decode(String s, String enc)
使用指定的編碼機制對 application/x-www-form-urlencoded 字符串解碼。
2.發送的時候使用URLEncoder.encode編碼,接收的時候使用URLDecoder.decode解碼,都按指定的編碼格式進行編碼、解碼,可以保證不會出現亂碼
3.主要用來http get請求不能傳輸中文參數問題。http請求是不接受中文參數的。
這就需要發送方,將中文參數encode,接收方將參數decode,這樣接收方就能收到準確的原始字符串了。
如:
String testString = "abcdefghijk";try{String encoderString = URLEncoder.encode(testString, "utf-8");System.out.println(encoderString);String decodedString = URLDecoder.decode(encoderString, "utf-8");System.out.println(decodedString);} catch (UnsupportedEncodingException e){// TODO Auto-generated catch blocke.printStackTrace();}輸出: abcdefghijk%E6%BD%98%E5%AD%A6%E5%86%9B abcdefghijk 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的urlEncoder和urlDecoder的作用和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mvc:annotation-drive
- 下一篇: 机器学习实践:onnx模型转为Tenso