欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之URLEncoder、URLDecoder、Base64編碼與解碼方式

 更新時(shí)間:2024年05月15日 14:41:49   作者:alwaysonline1204  
這篇文章主要介紹了Java之URLEncoder、URLDecoder、Base64編碼與解碼方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

URLEncoder、URLDecoder、Base64編碼與解碼

1. URL

主要用來http get請求url不能傳輸中文參數(shù)問題。

http請求是不接受中文參數(shù)的

1.1 URLEncoder編碼

使用指定的編碼機(jī)制將字符串轉(zhuǎn)換為 application/x-www-form-urlencoded 格式

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

  • 字母數(shù)字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不變。
  • 特殊字符 “.”、"-"、"*" 和 "_"保持不變。
  • 空格字符 " " 轉(zhuǎn)換為一個(gè)加號 “+”。
  • 所有其他字符都是不安全的,因此首先使用一些編碼機(jī)制將它們轉(zhuǎn)換為一個(gè)或多個(gè)字節(jié)。然后每個(gè)字節(jié)用一個(gè)包含 3 個(gè)字符的字符串 "%xy"表示,其中 xy 為該字節(jié)的兩位十六進(jìn)制表示形式。推薦的編碼機(jī)制是 UTF-8。

1.2 URLDecoder解碼

使用指定的編碼機(jī)制對 application/x-www-form-urlencoded 字符串解碼。

1.3 舉例

    public static void main(String[] args) throws UnsupportedEncodingException {
        String str = "編碼測試+-./&=a=1*%123";
        String charset = "utf-8";
        System.out.println("urlEncoder編碼數(shù)據(jù): " + str);
        String encode = URLEncoder.encode(str, charset);
        System.out.println("編碼結(jié)果: " + encode);
        String decode = URLDecoder.decode(encode, charset);
        System.out.println("解碼結(jié)果: " + decode);
    }

urlEncoder編碼數(shù)據(jù): 編碼測試+-./&=a=1*%123
編碼結(jié)果: %E7%BC%96%E7%A0%81%E6%B5%8B%E8%AF%95%2B-.%2F%26%3Da%3D1*%25123
解碼結(jié)果: 編碼測試+-./&=a=1*%123

2. Base64

在網(wǎng)絡(luò)中傳輸數(shù)據(jù)都是使用ascii方式傳輸。對于一些圖片、視頻等數(shù)據(jù),可能就會被編碼成ascii中不可見部分的編碼。

網(wǎng)絡(luò)中不同的路由設(shè)備處理方式不同,有可能就會把這部分?jǐn)?shù)據(jù)弄丟了。

為了保證數(shù)據(jù)傳輸?shù)恼_性,可以使用Base64編碼將這些不可見數(shù)據(jù)編碼成可見數(shù)據(jù)。

由于某些系統(tǒng)中只能使用ASCII字符。Base64就是用來將非ASCII字符的數(shù)據(jù)轉(zhuǎn)換成ASCII字符的一種方法

2.1 Base64編碼

Base64.getEncoder().encode(str.getBytes())

2.2 Base64解碼

Base64.getDecoder().decode(encode)

2.3 舉例

    public static void main(String[] args) throws UnsupportedEncodingException {
        String str = "編碼測試+-./&=a=1*%123";
        String charset = "utf-8";
        System.out.println("base64編碼數(shù)據(jù): " + str);
        String encode = new String(Base64.getEncoder().encode(str.getBytes()));
        System.out.println("編碼結(jié)果: " + encode);
        String decode = new String(Base64.getDecoder().decode(encode));
        System.out.println("解碼結(jié)果: " + decode);
    }

base64編碼數(shù)據(jù): 編碼測試+-./&=a=1*%123
編碼結(jié)果: 57yW56CB5rWL6K+VKy0uLyY9YT0xKiUxMjM=
解碼結(jié)果: 編碼測試+-./&=a=1*%123

Java項(xiàng)目中遇到URLEncoder URLDecoder編碼解碼問題

做項(xiàng)目遇到的問題

就是獲取cookie中的用戶Id

1.我的用戶id是用base64Encode加碼

如下:

2.構(gòu)建需要返回給客戶端的用戶對象

3.base64Encode解碼失敗,獲取不到用戶ID,為空

4.原因是前端傳過來的用戶ID有什么的字符號不能識別,所以需要轉(zhuǎn)碼

5.這時(shí)候就要用到URLDecoder.decode編碼解碼

userIdString = URLDecoder.decode (userIdString, "UTF-8");

轉(zhuǎn)碼成功了,拿到值了

URLEncoder URLDecoder作用解釋

  • 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字符串。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java效率提升神器jOOR

    Java效率提升神器jOOR

    這篇文章主要介紹了Java效率提升神器jOOR,jOOR是一個(gè)第三方庫,通過鏈?zhǔn)紻SL接口,簡化了反射過程,更多相關(guān)內(nèi)容組要的朋友可以參考一下
    2022-07-07
  • java中邏輯控制舉例具體講解

    java中邏輯控制舉例具體講解

    Java程序邏輯控制通俗說就是對代碼執(zhí)行順序的控制,這篇文章主要給大家介紹了關(guān)于java中邏輯控制的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • java快速解析路徑中的參數(shù)(&與=拼接的參數(shù))

    java快速解析路徑中的參數(shù)(&與=拼接的參數(shù))

    這篇文章主要介紹了java快速解析路徑中的參數(shù)(&與=拼接的參數(shù)),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-02-02
  • SpringBoot將logback替換成log4j2的操作步驟

    SpringBoot將logback替換成log4j2的操作步驟

    文章介紹了如何在SpringBoot項(xiàng)目中將默認(rèn)的日志框架logback替換為log4j2,以利用log4j2的高性能異步日志記錄特性,特別是通過Disruptor實(shí)現(xiàn)的無鎖化隊(duì)列,提高了日志處理速度,同時(shí),文章提供了詳細(xì)的配置步驟,需要的朋友可以參考下
    2024-10-10
  • Java8 String內(nèi)存優(yōu)化之字符串常量池詳解

    Java8 String內(nèi)存優(yōu)化之字符串常量池詳解

    這篇文章主要介紹了Java8 String內(nèi)存優(yōu)化之字符串常量池,具有很好的參考價(jià)值,希望對大家有所幫助,
    2023-07-07
  • Java效率提升神器之Guava-Joiner

    Java效率提升神器之Guava-Joiner

    這篇文章主要介紹了Java效率提升神器之Guava-Joiner,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • java實(shí)現(xiàn)在原有日期時(shí)間上加幾個(gè)月或幾天

    java實(shí)現(xiàn)在原有日期時(shí)間上加幾個(gè)月或幾天

    這篇文章主要介紹了java實(shí)現(xiàn)在原有日期時(shí)間上加幾個(gè)月或幾天,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 快速搭建springboot項(xiàng)目(新手入門)

    快速搭建springboot項(xiàng)目(新手入門)

    本文主要介紹了快速搭建springboot項(xiàng)目(新手入門),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • SpringBoot使用AOP記錄接口操作日志的方法

    SpringBoot使用AOP記錄接口操作日志的方法

    日志記錄量是很大的,所以只記錄關(guān)鍵地方并按期歸檔,最好是存在如elasticsearch中,如果存在數(shù)據(jù)庫中,分表是不錯(cuò)的選擇,這篇文章主要介紹了SpringBoot使用AOP記錄接口操作日志的方法,需要的朋友可以參考下
    2022-08-08
  • java8 多個(gè)list對象用lambda求差集操作

    java8 多個(gè)list對象用lambda求差集操作

    這篇文章主要介紹了java8 多個(gè)list對象用lambda求差集操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論