2012-12-28 159 views
0

我試圖顯示和使用Base64更新簡化。中國(GB2312)字符集,Base64編碼爲GB2312工作正常,但我不能夠轉換GB2312爲Base64字符集編碼問題 - Base64編碼爲GB2312爲Base64

String str="17DP5Mqxx+vFxNXV"; 
Base64 base64=new Base64(); 
String gb2312=new String(base64.decode(str.getBytes()),"GB2312"); 
System.out.println("GB2312 = "+gb2312); 

String baseString=new String(base64.encode(gb2312.getBytes())); 
System.out.println("Base64 = "+baseString); 

Aactual結果是

GB2312 =裝箱時請拍照

的Base64 = 6KOF566x5pe26K + 35ouN54Wn

預期結果爲:

GB2312 =裝箱時請拍照

的Base64 = 17DP5Mqxx + vFxNXV

+0

我很難說,但在這兩種情況下GB2312是否正確? – Woot4Moo

回答

8

您應該指定字符在通話設置爲getBytes()當你的字符串轉換爲它的GB2312編碼:

String baseString=new String(base64.encode(gb2312.getBytes("GB2312"))); 

原則(和是完全安全的),你應該這樣做,當你從Base64編碼(str.getBytes())轉換,BU由於base-64編碼使用US-ASCII的子集,所以默認字符編碼可能是可以的。誰知道—您可能正在默認編碼爲EBCDIC的平臺上運行。

+0

謝謝@tedhopp偉大的解決方案!問題解決了 – Arun