2013-02-05 68 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字符串解码产生的字节数组。