當前位置:首頁 » 編程語言 » java編碼與解碼

java編碼與解碼

發布時間: 2023-04-01 00:21:18

① 在java中如何進行BASE64編碼和解碼

importsun.misc.BASE64Encoder;
importsun.misc.BASE64Decoder;

//將s進行BASE64編碼
publicstaticStringgetBASE64(Strings){
if(s==null)returnnull;
return(newsun.misc.BASE64Encoder()).encode(s.getBytes());
}

//將BASE64編碼的字元串s進行解碼
(Strings){
if(s==null)returnnull;
BASE64Decoderdecoder=newBASE64Decoder();
try{
byte[]b=decoder.decodeBuffer(s);
returnnewString(b);
}catch(Exceptione){
returnnull;
}
}

② java里關於String的編碼與解碼

public
byte[]
getBytes(String
charsetName)
使用指定的字元集將此String編碼為byte序列,結果存在一個byte數組中
public
String(byte[]
bytes,
String
charsetName)
通過使用指定的
charset
解碼指定的
byte
數組,構造一個新的
String。
在網路傳輸中,信息都是以位元組序列的方式傳輸的。所以,發送方的String要按照某種編碼方式(如UTF-8,GBK)編碼為位元組序列,在網路中傳輸後,接收方取得這個位元組序列,按照相同的編碼方式將位元組序列解碼為String。
請看下面的代碼片段:
String
name
=
"張三";
byte[]
b1
=
name.getBytes("UTF-8");
String
name1
=
new
String(b1,
"UTF-8");
//編碼解碼相同,正常顯示
System.out.println(name1);
String
name2
=
new
String(b1,
"GBK");
//編碼解碼不同,亂碼
System.out.println(name2);
byte[]
b2
=
name.getBytes("GBK");
String
name3
=
new
String(b2,
"GBK");
//編碼解碼相同,正常顯示
System.out.println(name3);
String
name4
=
new
String(b2,
"UTF-8");
//編碼解碼不同,亂碼
System.out.println(name4);
至於你的那個情況,要先用gbk編碼,然後再用utf-8解碼才能獲得正常的字元串,我估計是因為
1.傳輸過來的位元組碼是用utf-8編碼的,假設位元組碼為b。
2.你獲得的那個字元串,假設為s,是用gbk對b進行解碼獲得的字元串,所以是亂碼。
3.你使用gbk對s進行編碼,用gbk解碼之後再編碼,於是獲得了原來的b。
4.你使用utf-8解碼,所以獲得了正常的字元串。
簡單的說:
b
->
(gbk解碼)
->
亂碼
->
[此處開始是你做的](gbk編碼)
->
b
->
(utf-8解碼)
->
正常字元串
研究完編碼收獲會不小的,對以後理解Java的輸入輸出(尤其是網路通信和文件讀寫)都很有幫助。

熱點內容
python保留小數 發布:2025-07-01 06:45:34 瀏覽:755
為什麼伺服器有多個ip地址沖突 發布:2025-07-01 06:32:09 瀏覽:623
java的md5演算法實現 發布:2025-07-01 06:23:09 瀏覽:235
android默認的activity 發布:2025-07-01 06:06:12 瀏覽:421
青浦智能密碼鎖開鎖多少錢 發布:2025-07-01 06:02:42 瀏覽:441
編譯內核生成 發布:2025-07-01 05:48:23 瀏覽:618
咖啡壓縮糖 發布:2025-07-01 05:43:58 瀏覽:581
雲搜卡源碼 發布:2025-07-01 05:32:38 瀏覽:543
華為伺服器怎麼查ip 發布:2025-07-01 05:15:18 瀏覽:373
編譯器中的數據結構 發布:2025-07-01 05:10:53 瀏覽:529