gpt4 book ai didi

java - Perl 和 Java 中的 Base64 编码字符串不同

转载 作者:行者123 更新时间:2023-11-30 11:03:03 25 4
gpt4 key购买 nike

当我在 java 中将 pdf 文件编码为 base64 二进制文件(使用 commons lib)时,我得到了像“SGVsbG8gV_29y-bGQ =”这样的字符串(样本)

但是如果我使用 perl 对同一个文件进行编码,我会得到类似 "SGVsbG8gV/29y+bGQ="

字符串的区别:/而不是 _,+ 而不是 -

为什么我会这样?或者,有什么方法可以在不替换字符串的情况下进行修复吗?

在Java中

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

enter image description here

//Perl

enter image description here

最佳答案

Java 代码为您提供了 URL 安全的 base64,即输出可以在 URL 中使用。 Perl 版本不是。您可以盲目地将字符替换为其他值。

关于java - Perl 和 Java 中的 Base64 编码字符串不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30555407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com