Il semblerait raisonnable si vous allez avoir de telles politiques que vous auriez également l'encodage standard convenu par l'équipe. Pour être honnête, je ne vois pas pourquoi une équipe utiliserait un encodage autre que "Unicode (UtF-8 avec signature) - Codepage 65001" (sauf peut-être pour les pages ASPX avec un contenu statique non latin significatif mais même alors je peux ' Je ne vois pas en quoi il serait important d'utiliser UTF-8).
En supposant que vous souhaitiez toujours autoriser les codages mixtes, vous devez ensuite déterminer le codage dans lequel un fichier a été enregistré afin de connaître le codage à transmettre à ReadAllText
. Ce n'est pas facile à déterminer à partir du fichier, mais en utilisant Encoding.Default
est susceptible de fonctionner correctement. Comme il est très probable que vous ayez seulement 2 encodages à gérer, le VS (UTF-8 avec signature) et un codage ANSI commun utilisé par vos machines (probablement Windows-1252).
Et donc,
string content = File.ReadAllText(pendingChange.LocalItem, Encoding.Default);
fonctionnera. (Comme je vois que Jon a déjà posté). Cela fonctionne parce que lorsque la nomenclature UTF-8 (qui est ce que VS signifie par le terme "signature") est présente au début du fichier le paramètre de codage fourni est ignoré et UTF-8 est utilisé de toute façon. Ainsi, lorsque le fichier est sauvegardé en utilisant UTF-8, vous obtenez des résultats corrects et lorsque vous utilisez ANSI, vous obtiendrez probablement des résultats corrects.
BTW si vous êtes en train de traiter les en-têtes de fichiers ne serait pas ReadAllLines
faciliter les choses?
utilisez-vous toujours des en-têtes de fichiers? Ils semblent de peu de valeur ... –
@Mitch: Que recommanderiez-vous au lieu de transporter des informations de copyright dans le code source? – AnthonyWJones
Ce n'est pas à nous de décider, c'est la politique de l'entreprise. – Enyra