Мне нужно закодировать некоторые данные в кодировке Base64 в Java. Как я могу это сделать? Как называется класс, предоставляющий кодировщик Base64?
Я пытался использовать sun.misc.BASE64Encoder
класс, но безуспешно. У меня есть следующая строка кода Java 7:
wr.write(new sun.misc.BASE64Encoder().encode(buf));
Я использую Затмение. Eclipse помечает эту строку как ошибку. Я импортировал необходимые библиотеки:
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
Но опять же, оба они показаны как ошибки. я нашел похожий пост здесь .
Я использовал Apache Commons в качестве решения, включающего:
import org.apache.commons.*;
и импортировать файлы JAR, загруженные из: http://commons.apache.org/codec/
Но проблема все еще существует. Затмение по-прежнему показывает ошибки, упомянутые ранее. Что я должен делать?
sun.**
Ответы:
Вам нужно изменить импорт вашего класса:
А затем измените свой класс на использование класса Base64.
Вот пример кода:
Затем прочитайте, почему вы не должны использовать пакеты sun. * .
Обновление (2016-12-16)
Теперь вы можете использовать его
java.util.Base64
с Java 8. Сначала импортируйте его, как обычно:Затем используйте статические методы Base64 следующим образом:
Если вы хотите напрямую закодировать строку и получить результат в виде закодированной строки, вы можете использовать это:
См. Документацию Java для Base64 для получения дополнительной информации.
источник
Используйте класс Java 8 «никогда не поздно присоединиться к веселью»:
java.util.Base64
источник
В Java 8 это можно сделать следующим образом: Base64.getEncoder (). EncodeToString (string.getBytes (StandardCharsets.UTF_8))
Вот короткий, автономный полный пример:
Вывод:
источник
java.nio.charset.StandardCharsets
, Я отредактирую свой ответ. См. Stackoverflow.com/questions/1684040/…Вы также можете конвертировать, используя кодировку Base64. Для этого вы можете использовать
javax.xml.bind.DatatypeConverter#printBase64Binary
метод.Например:
источник
setDatatypeConverter()
метод (который затем должен вызываться для провайдеров JAXB).Google Guava - это еще один вариант кодирования и декодирования данных Base64:
Конфигурация POM:
Образец кода:
источник
Eclipse выдает сообщение об ошибке / предупреждение, потому что вы пытаетесь использовать внутренние классы, которые являются специфическими для поставщика JDK, а не являются частью общедоступного API. Jakarta Commons предоставляет собственную реализацию кодеков base64, которые, конечно, находятся в другом пакете. Удалите этот импорт и позвольте Eclipse импортировать соответствующую классу Commons для вас.
источник
Base64
вorg.apache.commons.codec.binary
? Это сейчас Apache Commons для этого контекста?Чтобы преобразовать это, вам нужен кодер и декодер, который вы получите от Base64Coder - кодера / декодера Base64 с открытым исходным кодом на Java . Это файл Base64Coder.java вам понадобится.
Теперь для доступа к этому классу в соответствии с вашими требованиями вам понадобится класс ниже:
В Android вы можете конвертировать ваше растровое изображение в Base64 для загрузки на сервер или веб-сервис.
Это «encodedImage» - текстовое представление вашего изображения. Вы можете использовать это либо для загрузки, либо для воспроизведения непосредственно на HTML-странице, как показано ниже ( ссылка ):
Документация: http://dwij.co.in/java-base64-image-encoder
источник
Для Java 6 6-7 лучший вариант - заимствовать код из репозитория Android. У него нет зависимостей.
https://github.com/android/platform_frameworks_base/blob/master/core/java/android/util/Base64.java
источник
Вот мои два цента ... Java 8 содержит собственную реализацию Base64 . Однако я обнаружил одну слегка тревожную разницу. Для иллюстрации приведу пример кода:
Мой кодек обертка:
Тестовый класс:
ВЫВОД:
Обратите внимание, что кодированный в Apache текст содержит дополнительные разрывы строк (пробелы) в конце. Поэтому, чтобы мой кодек выдавал один и тот же результат независимо от реализации Base64, мне пришлось вызывать
trim()
кодированный в Apache текст. В моем случае я просто добавил вышеупомянутый вызов метода к моему кодекуapacheDecode()
следующим образом:После того, как это изменение было внесено, я ожидаю начать с результатов:
ВЫВОД : Если вы хотите перейти с Apache Base64 на Java, вы должны:
Если вы переключитесь без выполнения этих шагов, скорее всего у вас возникнут проблемы. Вот как я сделал это открытие.
источник
В Android используйте статические методы класса утилит android.util.Base64 . В указанной документации говорится, что класс Base64 был добавлен в API уровня 8 ( Android 2.2 (Froyo)).
источник
Apache Commons имеет хорошую реализацию Base64. Вы можете сделать это так же просто, как:
Вы можете найти более подробную информацию о кодировке base64 в кодировке Base64 с использованием Java и JavaScript .
источник
Если вы используете Spring Framework как минимум версии 4.1, вы можете использовать класс org.springframework.util.Base64Utils :
Он будет делегировать Java 8 Base64, Apache Commons Codec или JAXB DatatypeConverter, в зависимости от того, что доступно.
источник
Простой пример с Java 8:
источник
В Java 7 я закодировал этот метод
источник
Если вы используете более раннюю версию Java, чем 8, но уже используете AWS SDK для Java , вы можете использовать com.amazonaws.util.Base64 .
источник
Я попытался с помощью следующего фрагмента кода. Это сработало хорошо. :-)
источник
источник