当我在Java中使用commons库将PDF文件编码为base64二进制格式时,我得到了一个字符串(示例):“SGVsbG8gV_29y-bGQ=”。但是如果我使用Perl编码相同的文件,我会得到像“SGVsbG8gV/29y+bGQ=”这样的结果。两个字符串的区别是:斜杠“/”代替下划线“_”,加号“+”代替减号“-”。为什么会这样?还有没有不需要替换字符串的方法来解决这个问题?
在Perl中,
byte[] data;
try (java.io.FileInputStream fin = new java.io.FileInputStream(new java.io.File("file.pdf"))) {
data = new byte[fin.available()];
fin.read(data);
}
return data;
System.out.println("ecncoded value is " + DatatypeConverter.printBase64Binary(data));
在Perl中,
use MIME::Base64;
open (PDF, "file.pdf") or die "$!";
$raw_string = do{ local $/ = undef; <PDF>; };
$encoded = encode_base64( $raw_string );
print " \n";
print " $encoded ";
// Java
// Perl