将字节数组转换为base64字符串java

将字节数组转换为base64字符串java,java,base64,apache-commons,Java,Base64,Apache Commons,正在尝试使用将字节[]转换为base64字符串 org.apache.commons.codec.binary.Base64。为此,我的java代码如下所示: base64String = Base64.encodeBase64URLSafeString(myByteArray); 但我看到生成的base64字符串中有一些无效字符 为什么我在生成的base64字符串中看到这些\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

正在尝试使用将
字节[]
转换为base64字符串
org.apache.commons.codec.binary.Base64
。为此,我的java代码如下所示:

 base64String = Base64.encodeBase64URLSafeString(myByteArray);
但我看到生成的
base64
字符串中有一些无效字符

为什么我在生成的
base64
字符串中看到这些
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?
它是有效字符串吗?
请注意,生成的字符串的长度可以除以四。

这可能会有所帮助

sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
encoder.encode(byteArray);
您(至少)有两种base64风格,最初的一种除了使用字母数字字符外还使用“+”和“/”,而“url安全”的一种使用“-”和“\”,这样内容就可以包含在url中(或者用作文件名,顺便说一句)

看起来您使用的是已转换为“url安全模式”的base64编码器

哦,
是base64字母表的最后一个字符,看到
“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,就像看到“aaaaa”意味着有很多连续的零


如果您想确信这是正常情况,只需选择您最喜欢的十六进制转储程序/编辑器,并检查二进制输入的外观。

通过以下过程,您可以将字节数组转换为Base64

 // Convert a byte array to base64 string
    byte[] bytearray= new byte[]{0x12, 0x23};
    String s = new sun.misc.BASE64Encoder().encode(bytearray);

    // Convert base64 string to a byte array
    bytearray = new sun.misc.BASE64Decoder().decodeBuffer(s);
编辑:


请查看下面链接的指南

您是否尝试使用
encodebase64urlsafesting
方法而不是使用
encodebase64urlsafesting

encodeBase64URLSafeString:

使用base64算法的URL安全变体对二进制数据进行编码 但不会将输出分块。url安全变体发出-和_ 而不是+和/字符

encodeBase64String:

使用base64算法编码二进制数据,但不分块 输出。注意:我们将此方法的行为从多行更改为多行 分块(commons-codec-1.4)到单行非分块 (commons-codec-1.5)

来源:

使用

String sCert = javax.xml.bind.DatatypeConverter.printBase64Binary(pk); 

你试过解码你的输出吗?另外,您正在URL中使用编码的base64数据。仅当base64编码进入http/get或其他与url相关的操作时,才使用URLSafe版本。这可能有助于提供您拥有的代码written@developer:我用来转换
字节[]
to string是我在问题中已经提供的一个methid…这是一个错误的建议--
sun.misc
包层次结构不供公共使用。我不想使用
sun.misc
`sun.misc.BASE64Decoder()??为什么我尝试使用ApacheCommonsSun.misc是Sun实现java/javax包的内部原因。不能保证它会一直存在(特别是在不同的JVM上),也不能保证它的接口在JVM的不同版本中保持不变,afaik。在所有的注释中,我都找到了一个有效的注释,我得到了
/
,并用
encodebase64urlsafesting
回复了econding方法以避免斜杠。。然后一切都从
开始。。我只需要知道上面的是一个有效的base64字符串?请建议。您是在询问该字符串是否匹配[0-9A-Za-z_u-]+或[0-9A-Za-z/+]+?这听起来像是regexp的工作。