Можно ли удалить новую строку в кодировке Base64?
В моем приложении java используется кодировка base64, которая помещает новую строку (\n
) после каждых 76 символов. Мне нужно поместить эту закодированную строку в файл свойств, а новая строка нарушает функциональность.
Когда я делаю encodedString.replaceAll("\n", "");
, все работает нормально, но я просто хочу убедиться, что это ожидается, и я не представляю скрытую проблему.
Ответы
Ответ 1
Для многих старых программ, которые не могли обрабатывать длинные строки, потребовалась ломаная строка с кодировкой base64 в несколько строк. Программы, написанные на Java, обычно могут обрабатывать длинные строки, так как им не нужно самостоятельно управлять памятью. Пока ваши строки короче 64 миллионов символов, проблем не должно быть.
И поскольку вам не нужны строки новой строки, вы не должны генерировать их вообще, если это возможно.
Ответ 2
Некоторые из кодировщиков Base64 добавляют к закодированным строкам символы EOL, такие как CRLF ('\ r\n'). Вы можете использовать Base64.encodeBase64URLSafe, чтобы избавиться от них:
Кодирует двоичные данные, используя алгоритм base64, безопасный для URL, но не вырезает вывод. Исправляемая по умолчанию переменная испускает - и _ вместо символов + и /. Примечание: добавление дополнений не добавляется.
Ответ 3
Это не должно быть проблемой, поскольку многие декодеры могут декодировать закодированный текст без разделителя новой строки. Самый безопасный вариант - сделать декодирование самостоятельно и проверить его.