0

假设我有一个包含 Base64 文本的 byte[]。

我想用这个文本结束创建一个字符串:

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

当我创建新字符串时,我如何确定我没有从原始文本中删除信息。

我的意思是我如何确定在执行新字符串(文本,“字符集”)时传递了正确的字符集。

如果原始编码是“cp-1255”并且我正在做 str = new String(text,"UTF-8") 我可能会破坏文本吗?

4

3 回答 3

1

首先,您需要使用解密/解码字节

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(encodedBytes);

然后你需要从字节中发现字符编码

于 2013-02-05T08:42:26.173 回答
1

我认为,您需要检查Java 中的编码转换

为了不破坏原始文本,您还需要以正确的编码读取输入。

于 2013-02-05T08:44:33.337 回答
1

您需要知道字符编码,这取决于 Base64 的来源。此外,您必须使用正确的编码,如果 Base64 不代表 UTF-8 中的二进制数据,那么使用 UTF-8 只会返回垃圾或抛出异常。

在这种情况下,您需要执行以下操作:

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

bytes解码 base64 字符串产生的字节数组在哪里。

于 2013-02-05T09:15:05.833 回答