Estoy tratando de escribir un programa en C# que dividirá un archivo vCard (VCF) con múltiples contactos en archivos individuales para cada contacto. Entiendo que la vCard debe guardarse como ANSI (1252) para que la mayoría de los teléfonos móviles los lean.Conversión de Unicode a Windows-1252 para vCards
Sin embargo, si abro un archivo VCF usando StreamReader
y después grabarla con StreamWriter
(ajuste de 1252 como el formato de codificación), todos los caracteres especiales como å
, æ
y ø
se están escritos como ?
. Seguramente ANSI (1252) apoyaría estos caracteres. ¿Cómo puedo solucionar esto?
Edit: Aquí está el fragmento de código que uso para leer y escribir el archivo.
private void ReadFile()
{
StreamReader sreader = new StreamReader(sourceVCFFile);
string fullFileContents = sreader.ReadToEnd();
}
private void WriteFile()
{
StreamWriter swriter = new StreamWriter(sourceVCFFile, false, Encoding.GetEncoding(1252));
swriter.Write(fullFileContents);
}
Creo que la clave para el problema del OP es tu última pregunta: asegúrate de que el 'StreamReader' que lee el VCF tenga el conjunto de codificación 1252. –
No estoy configurando la codificación al leer el archivo usando 'StreamReader'. Y estoy usando el mismo código que tu muestra. Pero el archivo VCF de entrada está en UTF-8. Por algún motivo, la función "Copia de seguridad en MS" de Sony Ericsson guarda el archivo VCF en UTF-8. – GPX
@GPX: vea mi respuesta actualizada, creo que debería resolver su problema. – Kredns