Convertir ANSI (Windows 1252) pour de l'utf-8 en C#

J'ai demandé cela avant dans un rond-point avant ici sur un Débordement de Pile et voulez bien faire les choses cette fois. Comment puis-je convertir ANSI (page de Codes 1252) en UTF-8, tout en préservant les caractères spéciaux? (Je suis conscient que l'UTF-8 prend en charge un plus grand jeu de caractères de la norme ANSI, mais il est correct si je peux conserver tous les caractères UTF-8 qui sont pris en charge par l'ANSI et remplacer le reste avec un ? ou quelque chose)

Pourquoi je Veux Convertir ANSI → UTF-8

Je suis fondamentalement écrire un programme qui divise les fichiers vCard (VCF) dans des fichiers individuels, chacun ne contenant qu'un seul contact. J'ai remarqué que Nokia et Sony Ericsson téléphones enregistrer la sauvegarde VCF fichier en UTF-8 (sans BOM), mais Android enregistre dans la norme ANSI (1252). Et Dieu sait dans quels formats les autres téléphones de les enregistrer dans!

Donc mes questions sont les

  1. N'est-il pas une norme de l'industrie pour les fichiers vCard' encodage des caractères?
  2. Qui est plus facile pour ma résolution de mon problème? La conversion ANSI UTF8 (et/ou l'inverse), ou à essayer de détecter l'encodage du fichier d'entrée a et la notification de l'utilisateur à ce sujet?

tl;dr
Besoin de savoir comment faire pour convertir l'encodage des caractères à partir de (ANSI /UTF8) à (UTF8 /ANSI) tout en préservant tous les caractères spéciaux.

OriginalL'auteur GPX | 2010-12-08