2009-11-28 6 views

Répondre

8

ANSI est la page de codes ANSI actuelle de Windows, équivalente à Encoding.Default.

OEM est la page de codes OEM actuellement utilisée par les applications console.

Vous pouvez obtenir cela en utilisant:

Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage) 

Dans une application de la console, l'encodage OEM sera également disponible en utilisant

Console.OutputEncoding 
+0

Merci pour l'extrait de code sera utile pour moi. – programmernovice

1

De ma compréhension, CharacterSet = ANSI est équivalente à Encoding.Default. OEM pourrait être ASCIIEncoding alors. Cependant, ANSI utilise la page de code ANSI du système, ce qui peut entraîner des incompatibilités si le même fichier est accédé à partir d'ordinateurs avec des pages de codes différentes.

+0

Merci pour cette précision. – programmernovice

+0

Incorrect. OEM est différent de 8 bits que ANSI (qui est 'Encoding.Default') et ASCII est 7 bits seulement. – ygoe

2

C'est vraiment, vraiment ancienne. ODBC date de l'âge de pierre, lorsque Windows a commencé à prendre le relais de MS-DOS. À l'époque, beaucoup de texte était encore encodé dans le jeu de caractères original IBM-PC, nommé "OEM Character Set" par Microsoft. L'ensemble IBM-PC standard comportait des caractères accentués et des pseudo-glyphes graphiques dans la moitié supérieure, les codes 0x80-0xff. Trop limitée pour la sortie de texte dans des langues autres que l'anglais, Microsoft a commencé à utiliser des pages de codes, des plages de glyphes de caractères adaptées à un groupe de langues donné. L'ensemble de caractères anglais américain a été normalisé par ANSI, cette étiquette est maintenant attachée (de manière incorrecte) à toute page de code non-OEM.

Personne n'encode le texte dans le jeu de caractères OEM, il a été adopté par le dodo il y a au moins 10 ans. Le réglage approprié ici est ANSI. Et en gardant les doigts croisés derrière votre dos que la page de code utilisée pour encoder le texte correspond à la page de code par défaut de votre système. C'est dodo aussi, Unicode l'a résolu.

+0

Grande histoire ouais je suppose qu'il n'est plus utilisé mais je dois faire face à d'anciens formats de données au travail :) – programmernovice

+0

Je dois aussi utiliser cela.Certains logiciels de premier plan en cours de développement par l'un des plus grands éditeurs de logiciels au monde utilisent toujours des pages de codes OEM. - Il a une longue histoire qui remonte à "l'âge de pierre", cependant. –

+0

-1. 1) Les encodages ne vont pas encore "au chemin du dodo", tous les formats majeurs les spécifient d'une manière ou d'une autre. 2) Unicode lui-même a quelques représentations différentes (encodages) - Unicode n'est pas un encodage mais un jeu de caractères, et le codage est une conversion entre celui-ci et un flux d'octets. –

0

J'ai compilé ma référence afin de basculer entre les deux:

Windows code page  Name   System.Text.Encoding schema.ini CharacterSet 
20127     ASCII (US)  ASCII     20127 
1252     ANSI Latin I Default     ANSI 
65001     UTF-8   UTF8     65001 
1200     UTF-16 LE  Unicode     Unicode 
1201     UTF-16 BE  BigEndianUnicode  1201
Questions connexes