Base64 编码中的 Java 特殊字符

标签 java character-encoding base64

我正在尝试在我的 Java 程序中使用 basic64 编码。

问题是当我使用时

new sun.misc.BASE64Encoder().encode("my string".getBytes())

我收到带有\n 和\r 的 Base 64 字符串。我不知道如何避免这种情况,因为当我在文本文件中写入该字符串时,我得到以下内容

xxxxxxxxxxxxxxxx
yyyy

其中下一行由\n 和\r 生成。

我尝试使用替换(“\n”,“\n”)和\r相同,但我想知道是否有更好的解决方案或额外的参数,我可以在Base64编码中使用(甚至其他编码方式。)

我更改了库并且它正在工作!

这就是区别

Apache Q0FTSCNTVUJJUiMzNWYwMjFiMC1kZWRjLTRmZjgtYjNjMS0wZDY0NmVkMjFmOGUjMjAzMzU1MzczMzY=

太阳 FWmsMAID7Ecbf8gUd0WIvKBjJNXhtMCbcKVDW0R4KXY/e1Do8lItqDN4NH/RiBdckoIMeFrncJ5X Fju7R0cX822I/lFSkLab

奇怪...我以为 Base64 是一个标准...

最佳答案

Why Developers Should Not Write Programs That Call 'sun' Packages

The sun.* packages are not part of the supported, public interface. A Java program that directly calls into sun.* packages is not guaranteed to work on all Java-compatible platforms. In fact, such a program is not guaranteed to work even in future versions on the same platform.

考虑this :

probably somthing like this:

import org.apache.commons.codec.binary.Base64;

关于Base64 编码中的 Java 特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33389808/

相关文章:

java - 有没有一种好方法使用 Slf4j 将某些事件记录到单独的日志文件中?

mysql - 更改表转换为使用 latin1

javascript - 在javascript中将ú转换为u

java - 使用超大的 json 文件。返回总是内存不足

java - 使用构造函数参数模拟嵌套类并测试方法

java - Android 中的直接代码与库

java - 如何使用 Java 中的具体泛型调用 Kotlin 方法?

Java URLEncode 给出不同的结果

typescript - 为什么我不能在 array ionic 3 中获得完整的 base64 字符串?

PHP如何将二进制数据编码为base 64