Ni siquiera necesitará un juego de caracteres. 'text/plain' puede ser incorrecto, porque tampoco es realmente texto.
Aunque es compatible con ascii, utf-8, latin1 (como se menciona en ruakh), simplemente debe tratarlo como un archivo binario.
actualización
quería aclarar esto un poco (después de todas las downvotes, chicos comunes Dame una oportunidad!)
@ dan04: UTF-8 es texto, no he dicho no fue Base64 no lo es, base64 también es una codificación, pero puede codificar cualquier secuencia binaria. Base64 está codificado de tal manera que es posible envolverlo en US-ASCII (y por lo tanto también UTF-8 y latin1/ISO-8859).
Base64 sigue siendo una secuencia binaria, y no por texto de definición. El hecho de que el mismo rango de valores de octetos se utilice como US-ASCII (e "imprimible" por cualquier cosa que lea US-ASCII) no lo convierte en texto.
Esta es también la razón por la cual Base64 no tiene su propio tipo mimetype. Se considera una codificación de transferencia de contenido. (¡Búscalo!)
Así que la forma correcta de servir Base64 es con el tipo mimet de lo que contiene la cadena, junto con un encabezado Content-Transfer-Encoding. Por ejemplo, si está codificando un jpeg, este es el formato correcto.
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Ésta es la razón por la que siento que si no quiero decir nada sobre el contenido de la cadena (o no tiene esta información), lo mejor es tratarlo como 'binario genérico', por ejemplo:
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
No debe haber comillas alrededor de las partes text/plain o utf8 de eso. – Quentin
@quentin Gracias. Realmente no lo sabía ... –
Todavía siento que la respuesta aceptada es incorrecta (a pesar de que la mía votó negativamente). Aclaré mi respuesta un poco, ¿me importa reconsiderar? – Evert