Декодирование строки Base64 в Java
Я пытаюсь декодировать простую строку Base64, но не могу этого сделать. В настоящее время я использую пакет org.apache.commons.codec.binary.Base64
.
Используемая тестовая строка: abcdefg
, закодированная с использованием PHP YWJjZGVmZw==
.
Это код, который я использую в настоящее время:
Base64 decoder = new Base64();
byte[] decodedBytes = decoder.decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n") ;
Вышеприведенный код не выдает ошибку, но вместо этого не выводит декодированную строку, как ожидалось.
Ответы
Ответ 1
Измените пакет, который вы используете:
import org.apache.commons.codec.binary.Base64;
И затем используйте его следующим образом:
byte[] decoded = Base64.decodeBase64("YWJjZGVmZw==");
System.out.println(new String(decoded, "UTF-8") + "\n");
Ответ 2
Следующее должно работать с последней версией общего кодека Apache
byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes));
и для кодирования
byte[] encodedBytes = Base64.getEncoder().encode(decodedBytes);
System.out.println(new String(encodedBytes));
Ответ 3
Обычно base64 используется для изображений. если вы хотите декодировать изображение (jpg в этом примере с пакетом org.apache.commons.codec.binary.Base64):
byte[] decoded = Base64.decodeBase64(imageJpgInBase64);
FileOutputStream fos = null;
fos = new FileOutputStream("C:\\output\\image.jpg");
fos.write(decoded);
fos.close();
Ответ 4
Если вы не хотите использовать apache, вы можете использовать Java8:
byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n");