Java中的Base64字符串到字节[] [重复]

Posted

技术标签:

【中文标题】Java中的Base64字符串到字节[] [重复]【英文标题】:Base64 String to byte[] in java [duplicate] 【发布时间】:2017-06-15 13:39:24 【问题描述】:

我正在尝试将 base64 字符串转换为字节数组,但它抛出以下错误

java.lang.IllegalArgumentException: 非法 base64 字符 3a

我尝试了以下选项 userimage is base64 string

byte[] img1 = org.apache.commons.codec.binary.Base64.decodeBase64(userimage);`

/* byte[] decodedString = Base64.getDecoder().decode(encodedString.getBytes(UTF_8));*/
/* byte[] byteimage =Base64.getDecoder().decode( userimage );*/
/* byte[] byteimage =  Base64.getMimeDecoder().decode(userimage);*/`

【问题讨论】:

【参考方案1】:

您可以使用java.util.Base64 包将字符串解码为byte[]。 下面是我用于编码和解码的代码。

对于 Java 8:

import java.io.UnsupportedEncodingException;
import java.util.Base64;

public class Example 

    public static void main(String[] args) 
        try 
            byte[] name = Base64.getEncoder().encode("hello World".getBytes());
            byte[] decodedString = Base64.getDecoder().decode(new String(name).getBytes("UTF-8"));
            System.out.println(new String(decodedString));
         catch (UnsupportedEncodingException e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
        
    

对于 Java 6:

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;

public class Main 

    public static void main(String[] args) 
        try 
            byte[] name = Base64.encodeBase64("hello World".getBytes());
            byte[] decodedString = Base64.decodeBase64(new String(name).getBytes("UTF-8"));
            System.out.println(new String(decodedString));
         catch (UnsupportedEncodingException e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
        
    

【讨论】:

不错的解决方案!请记住,如果 Web 浏览器以 Base64 格式发布图像,则应考虑字符串 data:image/jpeg;base64, 的开头。你可以使用new String(base64Image.substring(base64Image.indexOf(",") + 1)).getBytes("UTF-8"));

以上是关于Java中的Base64字符串到字节[] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 中将 Base64 编码的 NSString 转换为字节数组(Java)?

如何将base64位的字节数组转换成图片并显示

Base 64 原理

java 按字节读写二进制文件(Base64编码解码)

在 C# 中将 Base64 字节数组解码为图像

Java将Base64转换为十六进制字符串[重复]