0

我有:

String text = // same String (text)
byte[] byteArray = org.apache.commons.codec.binary.Base64.decodeBase64(text);
System.out.println("Length: " + byteArray.length);

在 Windows 上的结果是 31,在 Linux 上是 32。我尝试使用 sun.misc.BASE64Decoder 并且几乎遇到了同样的问题......

为什么不同操作系统上的结果长度不同,我该如何修复它以使其适用于两者?

4

3 回答 3

3

可能是因为 Windows 上默认使用的字符编码与 Linux 上的不同。

您可以尝试使用简单的字节数组,而不是字符串作为输入。

于 2012-04-23T18:44:54.757 回答
1

我猜这可能是由默认为("\r\n")和的行分隔符引起的("\n")。你为什么不尝试没有这些(好吧,如果那是问题的话)。

只是我的两分钱。

于 2012-04-23T18:44:06.533 回答
1

在这种特定情况下,问题是字符串文本不同。从命令行加载时,在 Linux 中,您必须在命令行中的文本之前和之后添加单引号,否则它会在字符串中附加一些 Windows 没有的内容。

于 2012-04-26T01:31:41.987 回答