2017-01-30 12 views
3

Я пытаюсь преобразовать base64 строку в массив байтов, но он бросает следующее сообщение об ошибкеBase64 строки в байт [] в Java

java.lang.IllegalArgumentException: Illegal 3a base64 символ

I попробовал следующие варианты userimage является base64 строка

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);*/` 

ответ

9

Вы можете использовать пакет java.util.Base64 декодировать строку в Byte []. Ниже код, который я использовал для кодирования и декодирования.

Для Java 8: package com.test;

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(); 
     } 
    } 
} 
+0

благодаря такой ответ решил мою проблему –

+0

это только для Java 8 – lxknvlk

+1

Здравствуйте @lxknvlk, я отредактировал мой ответ на Java 6 и выше, а также. –