2013-02-05 64 views
0

說我有一個byte []包含Base64文本。獲取正確的編碼

我想利用這個文本最終創建一個字符串出來的:

str = new String(text,"charset"); 

當我創建新的字符串我怎麼能肯定我不是從 原文懊悔不已indormation。

我的意思是我怎麼能確定我在做新的字符串(文本,「charset」)時傳遞正確的字符集。

如果原始編碼是「cp-1255」,並且我正在執行str = new String(text,「UTF-8」),我可能會破壞文本嗎?

+1

由於Base64基本上只是對任何二進制數據進行ASCII編碼,所以在沒有任何額外信息的情況下會丟失。此外,我們無法提供有用的答案,不知道您的字節數組是如何生成的以及它們來自哪裏。 – jlordo

+0

使用'new String(base64,StandardCharsets.US_ASCII);' – McDowell

回答

1

您需要知道字符編碼,這取決於Base64的來源。此外,如果Base64不以UTF-8表示二進制數據,則必須使用正確的編碼,然後使用UTF-8將返回垃圾或拋出異常。

在這種情況下,你需要做的:

str = new String(bytes, "Windows-1255"); 

哪裏bytes是一個base64字符串解碼產生的字節數組。