說我有一個byte []包含Base64文本。獲取正確的編碼
我想利用這個文本最終創建一個字符串出來的:
str = new String(text,"charset");
當我創建新的字符串我怎麼能肯定我不是從 原文懊悔不已indormation。
我的意思是我怎麼能確定我在做新的字符串(文本,「charset」)時傳遞正確的字符集。
如果原始編碼是「cp-1255」,並且我正在執行str = new String(text,「UTF-8」),我可能會破壞文本嗎?
說我有一個byte []包含Base64文本。獲取正確的編碼
我想利用這個文本最終創建一個字符串出來的:
str = new String(text,"charset");
當我創建新的字符串我怎麼能肯定我不是從 原文懊悔不已indormation。
我的意思是我怎麼能確定我在做新的字符串(文本,「charset」)時傳遞正確的字符集。
如果原始編碼是「cp-1255」,並且我正在執行str = new String(text,「UTF-8」),我可能會破壞文本嗎?
首先,你需要解密/使用
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(encodedBytes);
我想,你需要檢查Encoding conversion in java
不破壞原始文本解碼字節,你需要以正確的編碼讀取輸入。
您需要知道字符編碼,這取決於Base64的來源。此外,如果Base64不以UTF-8表示二進制數據,則必須使用正確的編碼,然後使用UTF-8將返回垃圾或拋出異常。
在這種情況下,你需要做的:
str = new String(bytes, "Windows-1255");
哪裏bytes
是一個base64字符串解碼產生的字節數組。
由於Base64基本上只是對任何二進制數據進行ASCII編碼,所以在沒有任何額外信息的情況下會丟失。此外,我們無法提供有用的答案,不知道您的字節數組是如何生成的以及它們來自哪裏。 – jlordo
使用'new String(base64,StandardCharsets.US_ASCII);' – McDowell