gpt4 book ai didi

java - java中使用BASE64进行解码和编码

转载 作者:行者123 更新时间:2023-12-01 12:06:13 26 4
gpt4 key购买 nike

我在尝试对从磁盘上的文件读取的字符串进行编码和解码时遇到错误结果。

我使用以下代码进行解码然后编码:

byte[] word_bytes = new BASE64Decoder().decodeBuffer(word); //word is string variable

String tempStr = new BASE64Encoder().encode(word_bytes);

根据这段代码,我期望如果我打印“word”和“tempStr”,我应该看到相同的结果。然而,值(value)观是不同的。

例如,如果 word = "hi!",则 tempStr = "hi//"并且所有单字母单词都会转换为空值。例如,如果 word = "a",则 tempStr = ""。

磁盘上的文件采用 UTF-8 编码。

如果有人能解释此错误的原因,将会非常有帮助。

抱歉,如果这是一个非常基本的问题,我之前对编码格式没有太多经验。

谢谢

最佳答案

你的编码/解码是向后的

Base64 是一种将字节数组转换为字符串的方法,可以轻松传递而不会弄乱字节编码。

因此,您将字节数组编码为字符串,然后解码回字节数组

如果你调换编码和解码的顺序

     String tempStr = new BASE64Encoder().encode("hi".getBytes());

byte[] word_bytes = new BASE64Decoder().decodeBuffer(tempStr);

System.out.println(tempStr);
System.out.println(new String(word_bytes));

它将打印:

aGk=
hi

看来您正在使用 sun Base64 类,这不是一个好主意。这些是内部类,不能保证它们会出现在 Java 的 future 版本中或出现在所有 Java 实现中。

如果您使用的是 Java 8,则可以使用新的 java.util.Base64javadoc here如果您使用的是 Java 8 之前的版本,则应该使用具有 Base64 类的第三方库。

关于java - java中使用BASE64进行解码和编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576926/

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