Java中Base64解碼中文的深坑

2021-09-10 08:35:52 字數 794 閱讀 7589

今天因為需要解析乙個郵件中的附件,而這個附件的附件名稱和內容都是base64的格式的,而且已經明確編碼格式為:gb2312,所以現在需要解碼,下面附上原始碼:

zbzgrdeucg5n (原文為:1.png)

既然已經知道了加密的格式直接解密就好了呀但是!!!!!!我使用了第一種解密辦法:

一、

string str = "zbzgrdeucg5n";

string result = new string(base64.decodebase64(str.getbytes("gbk")));

system.out.println(result);

我使用了另一種的base64加密解密工具!!

二、

string jiamiqian = "1.png";

string jiamihou = new string(new sun.misc.base64encoder().encode(jiamiqian.getbytes("gb2312")));

system.out.println(jiamihou);

base64decoder decoder = new base64decoder();

system.out.println(new string(decoder.decodebuffer(jiamihou), "gb2312"));

看到沒有中文沒有問題,至於這個問題的總結感覺上應該是加密的工具的問題,我僅僅知道加密時用的編碼格式但是並不知道用的是什麼工具,所以如果你們也出了這種問題的話可以嘗試一下另一種工具。

base64編碼 解碼

ps base64是一種資料編碼方式,目的是讓資料符合傳輸協議的要求,有些人誤用它進行資料加密 base64編碼 nsstring base64encodedstringwithstring nsstring string base64解碼 nsstring base64decodedstringw...

Base64編碼解碼

一.base64編碼由來 為什麼會有base64編碼呢?因為有些網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ascii碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如二進位製流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議...

base64編譯碼原理

base64 base64的編碼都是按字串長度,以每3個8bit的字元為一組,然後針對每組,首先獲取每個字元的ascii編碼,然後將ascii編碼轉換成8bit的二進位制,得到一組3 8 24bit的位元組 然後再將這24bit劃分為4個6bit的位元組,並在每個6bit的位元組前面都填兩個高位0,...