當前位置:首頁 » 編程語言 » 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的輸入輸出(尤其是網路通信和文件讀寫)都很有幫助。

熱點內容
我的世界catserver伺服器搭建 發布:2023-06-03 22:54:38 瀏覽:246
我的世界官方伺服器如何聯機 發布:2023-06-03 22:52:48 瀏覽:418
nosql存儲技術 發布:2023-06-03 22:52:46 瀏覽:135
什麼情況使用視頻伺服器 發布:2023-06-03 22:50:48 瀏覽:927
linux如何設置時間同步伺服器 發布:2023-06-03 22:50:36 瀏覽:722
保安器械配置有哪些 發布:2023-06-03 22:42:08 瀏覽:477
c資料庫oracle資料庫 發布:2023-06-03 22:41:01 瀏覽:983
access修復資料庫 發布:2023-06-03 22:40:12 瀏覽:82
3吐溫80的tsb如何配置 發布:2023-06-03 22:39:18 瀏覽:358
sqlserver導入xml 發布:2023-06-03 22:37:20 瀏覽:212