Comment Encoding.Default fonctionne-t-il dans .NET?
Je suis en train de lire un fichier à l'aide de:
var source = File.ReadAllText(path);
et le caractère ©
n'a pas été chargé correctement.
Puis, je l'ai changé pour:
var source = File.ReadAllText(path, Encoding.UTF8);
et de rien.
J'ai décidé d'essayer d'utiliser
var source = File.ReadAllText(path, Encoding.Default);
et il a parfaitement fonctionné.
Ensuite, j'ai débogué et essayé de trouver lequel l'Encodage a fait le tour, et j'ai trouvé que c'était UTF-7
.
Ce que je veux savoir, c'est:
Est-il recommandé d'utiliser Encoding.Default
et peut-il garantir que tous les caractères du fichier sera lu sans problèmes?
source d'informationauteur Oscar Mederos
Vous devez vous connecter pour publier un commentaire.
Encodage.Valeur par défaut ne pouvons garantir que tous UTF-7 jeux de caractères sera lu correctement (google pour l'ensemble). D'autre part, si vous essayez de lire un fichier n'est pas encodé en UTF-8 dans le mode UTF-8, vous obtiendrez des caractères corrompus comme vous l'avez fait.
Par exemple, si le fichier est encodé en UTF-16 et si vous l'avez lu en UTF-16 mode, vous serez très bien, même si le fichier ne contient pas un seul UTF-16 caractères spécifiques. Tout se résume à l'encodage du fichier.
Vous aurez besoin de faire enregistrer - rouvrir des choses avec le même encodage pour être à l'abri des corruptions. Sinon, essayez d'utiliser l'UTF-7 autant que vous le pouvez, car il est le plus compact encore 'email sûr d'encodage" possible, c'est pourquoi il est par défaut dans la plupart des .NET framework configurations.
Il n'est pas recommandé d'utiliser le Codage.Par défaut.
Citation de MSDN:
On dirait que vous vous êtes intéressé à la détection automatique de l'encodage d'un fichier, dans une sorte de situation où vous n'êtes pas dans le contrôle de l'encodage utilisé pour le sauver. Il y a plusieurs questions sur StackOverflow aborder cette question; certains superficielle de la navigation de points à Déterminer une chaîne de codage en C# comme assez bonne. Mon préféré réponse est l'un pointant vers le C# port de Mozilla jeu de caractères universel détecteur de.
Je pense que le ur fichier est en utf-7 encodage.rien de plus.
visitez cette page Votre Réponse