Java - Base64.decodeBase64(text)在Windows和Linux上有不同的结果

时间:2012-04-23 18:40:14

标签: java base64

我有:

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并且几乎有同样的问题......

为什么结果在不同的操作系统上有不同的长度,如何修复它以便它可以同时工作?

3 个答案:

答案 0 :(得分:3)

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

您可以尝试使用简单的字节文件,而不是String作为输入。

答案 1 :(得分:1)

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

只是我的两分钱。

答案 2 :(得分:1)

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