Delphi: декодировать Base64 в TBytes
Base64 представляет двоичные данные текстовыми символами. Это кодирование, а не шифрование. После декодирования получается массив байтов; считать его текстом можно только зная исходную кодировку.
Минимальный пример
uses
System.SysUtils, System.NetEncoding;
var
Data: TBytes;
Text: string;
begin
Data := TNetEncoding.Base64.DecodeStringToBytes(
'SGVsbG8gV29ybGQ=');
Text := TEncoding.UTF8.GetString(Data);
Writeln(Text); // Hello World
end;Используйте общий объект TNetEncoding.Base64 для стандартного Base64. Создание отдельного экземпляра требует отдельного управления его временем жизни. Используйте подходящую разновидность кодирования через API вашего выпуска.
Проверка входных данных
- Различайте обычный Base64 и URL-safe вариант: их алфавит и правила padding могут отличаться.
- Не считайте префикс data:image/...;base64, частью закодированных байтов.
- Ограничьте размер входа и обработайте ошибку неверного формата.
- Для изображения или архива сохраните TBytes как двоичные данные, не прогоняя через UTF-8.
Проверьте известную строку, пустой ввод и испорченный символ. Обратное преобразование EncodeBytesToString полезно для проверки, но допустимые формы padding/переносов оценивайте по выбранному API, а не только по совпадению строк.