2013-02-16 41 views
1

我想將python的一些代碼轉換爲java。而現在堅持與蟒蛇的base64編碼器值超過63Base64 - python與java值大於63

蟒蛇更大:

s = chr(59) + chr(234) 
print(base64.b64encode(s)) 
>> O+o= 

的Java

char[] chars = {59, 234}; 
String data = new String(chars); 
byte[] encoded = Base64.encodeBase64(data.getBytes()); 
System.out.println(new String(encoded)); 
>> O8Oq 

任何人任何想法?

+3

您應該明確定義Java端的字符集,以匹配Python端使用的默認ASCII編碼。 – Perception 2013-02-16 18:37:50

+0

謝謝,知道我用getBytes(「ISO-8859-1」)得到正確的輸出。 – nt2005 2013-02-16 18:43:59

回答

1

請注意,您的Python代碼片段已經處理字節,而Java版本則以Unicode字符開始,然後通過調用data.getBytes()將它們轉換爲字節。

您可以通過編碼實現同樣的結果在Python UTF-8第一:

>>> (unichr(59) + unichr(234)).encode('utf-8').encode('base64') 
'O8Oq\n' 
0

下面是最終的Java代碼:

char[] chars = {59, 234}; 
String data = new String(chars); 
byte[] encoded = Base64.encodeBase64(data.getBytes("ISO-8859-1")); 
System.out.println(new String(encoded)); 
>> O+o= 

感謝大家的幫助。 :)