Relation entre le codage .NET et le jeu de caractères
-
06-07-2019 - |
Question
Quelle est la relation entre CharacterSet ici:
http://msdn.microsoft.com/en-us /library/ms709353(VS.85).aspx
et encoder ascii ici:
http://msdn.microsoft .com / fr-us / library / system.text.asciiencoding.getbytes (VS.71) .aspx
La solution
ANSI est la page de code ANSI Windows actuelle, équivalente à Encoding.Default.
OEM est la page de code OEM actuelle généralement utilisée par les applications console.
Vous pouvez l'obtenir en utilisant:
Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage)
Dans une application console, l'encodage OEM sera également disponible avec
.Console.OutputEncoding
Autres conseils
C'est vraiment très ancien. ODBC date de l'âge de pierre, à l'époque où Windows commençait à prendre le relais de MS-DOS. À l'époque, de nombreux textes étaient encore encodés dans le jeu de caractères IBM-PC d'origine, appelé "Jeu de caractères OEM". par Microsoft. Le jeu IBM-PC standard comportait des caractères accentués et des pseudo-glyphes graphiques dans la moitié supérieure, codes 0x80-0xff.
Trop limité pour la sortie de texte dans des langues autres que l'anglais, Microsoft a commencé à utiliser des pages de code, des plages de glyphes de caractères adaptées à un groupe de langues donné. Le jeu de caractères anglais américain a été normalisé par ANSI. Cette étiquette est désormais attachée (de manière incorrecte) à une page de code non-OEM.
Plus personne n’encode de texte dans le jeu de caractères OEM, il a suivi le même chemin que le dodo il ya au moins 10 ans. Le paramètre approprié ici est ANSI. Et gardez les doigts croisés derrière le dos pour que la page de code utilisée pour coder le texte corresponde à la page de code par défaut de votre système. C'est aussi le dodo, Unicode l'a résolu.
La réponse courte à votre question, il n'y a pas de relation directe.
La version la plus longue:
CharacterSet
pour le fichier "Schema.ini". Le fichier peut être ANSI
ou OEM
.
ANSI et ASCII font référence à autre chose.
Vous pouvez en lire plus ici:
Présentation des caractères ASCII et ANSI
Encodage ASCII vs ANSI par Alex Hoffman
De ma compréhension, CharacterSet = ANSI équivaut à Encoding.Default . OEM pourrait alors être ASCIIEncoding.
Toutefois, ANSI utilise la page de codes ANSI du système. Par conséquent, des incompatibilités peuvent survenir si le même fichier est accessible à partir d'ordinateurs dotés de pages de codes différentes.
J'ai compilé ma propre 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