Вам даже не понадобится кодировка. 'text / plain' может быть неправильным, потому что это также не совсем текст.
Несмотря на то, что он совместим с ascii, utf-8, latin1 (как упоминалось в ruakh), вы должны просто обращаться с ним как с двоичным файлом.
Обновление
Я хотел бы уточнить это немного (после всех отрицательных голосов, простые парни дают мне шанс!)
@ dan04: UTF-8 - это текст, я не говорил, что это не так. Base64 нет, base64 также является кодировкой, но она может кодировать любую двоичную последовательность. Base64 закодирован таким образом, что его можно обернуть в US-ASCII (и, следовательно, также в UTF-8 и latin1 / ISO-8859).
Base64 по-прежнему является просто двоичной последовательностью, а не по тексту определения. Тот факт, что тот же диапазон значений октетов используется как US-ASCII (и «печатается» всем, что читает US-ASCII), не делает его текстовым.
По этой же причине Base64 не имеет своего собственного mimetype. Это считается кодировкой передачи контента. (посмотрите!)
Таким образом, правильный правильный способ обслуживания Base64 - это mimetype того, что содержит строка, вместе с заголовком Content-Transfer-Encoding. Например, если вы кодируете JPEG, это правильный формат.
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
По этой же причине я чувствую, что если вы не хотите ничего говорить о содержимом строки (или у вас нет этой информации), лучше всего рассматривать ее как «универсальный двоичный файл», например:
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64