J'essaye d'écrire un programme en C# qui divisera un fichier vCard (VCF) avec plusieurs contacts en fichiers individuels pour chaque contact. Je comprends que la vCard doit être enregistrée en tant que ANSI (1252) pour la plupart des téléphones mobiles pour les lire.Conversion d'Unicode en Windows-1252 pour vCards
Cependant, si j'ouvre un fichier VCF à l'aide StreamReader
puis l'écrire en arrière avec StreamWriter
(réglage 1252 comme le format d'encodage), tous les caractères spéciaux comme å
, æ
et ø
sont écrits comme se ?
. Sûrement ANSI (1252) supporterait ces caractères. Comment puis-je réparer ça?
Editer: Voici le morceau de code que j'utilise pour lire et écrire le fichier.
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);
}
Je pense que la clé le problème de l'OP est votre dernière question: assurez-vous que 'StreamReader' qui lit le VCF a le jeu d'encodage 1252. –
Je ne définis pas l'encodage lors de la lecture du fichier en utilisant 'StreamReader'. Et j'utilise à peu près le même morceau de code que votre échantillon. Mais le fichier VCF d'entrée est en UTF-8. Pour une raison quelconque, la fonction "Sauvegarde sur MS" de Sony Ericsson enregistre le fichier VCF en UTF-8! – GPX
@GPX: Voir ma mise à jour, je pense que cela devrait résoudre votre problème. – Kredns