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

熱點內容
php手機社區源碼 發布:2024-04-20 23:13:09 瀏覽:656
介紹高德地圖如何查看電腦配置 發布:2024-04-20 23:03:37 瀏覽:994
演算法加運維 發布:2024-04-20 23:03:30 瀏覽:390
android匹配 發布:2024-04-20 22:58:33 瀏覽:168
string的長度java 發布:2024-04-20 22:46:20 瀏覽:136
網易我的世界監獄風雲的伺服器 發布:2024-04-20 22:35:41 瀏覽:186
linux服務自動重啟 發布:2024-04-20 22:34:54 瀏覽:962
編譯器最後的結果 發布:2024-04-20 22:30:38 瀏覽:821
安裝linuxoracle11g 發布:2024-04-20 22:29:02 瀏覽:533
android設置權重 發布:2024-04-20 22:20:08 瀏覽:725