El problema
Creas una página web desde donde pueden descargarse archivos VCard para importarlos y crear contactos en Outlook.
Todo funciona bien salvo que tildes, eñes u otros carácteres no usados en inglés no se visualizan bien.
Por ejemplo
Dª Estefanía se importa como
D? Estefan?a
Contexto
El problema me apareció en un desarrollo C# MVC ASP.NET usando la librería MixERP.Net.VCards pero la solución tiene aplicación en otros contextos,
Solución
Hay que codificar con "ISO-8859-1".
Usando un controlador ASP.NET MVC el código es:
[HttpPost]
public ActionResult VCard(Simple cto)
{
var _VCard = cto.GetComplejo().getVcard(); //genera Vcard en formato MixERP.Net.VCards
Response.Clear();
Response.AddHeader(
$"Content-Disposition",
$"attachment; filename={_VCard.FormattedName }.vcf;"
);
var serializedvCard = _VCard.Serialize();
return File(
Encoding.GetEncoding("ISO-8859-1").GetBytes(serializedvCard),
"text/x-vcard; charset=ISO-8859-1"
);
}