¿Fue útil?

Solución

ANSI es la página de códigos ANSI de Windows actual, equivalente a Encoding.Default.

OEM es la página de códigos OEM actual que suelen utilizar las aplicaciones de consola.

Puede obtener esto usando:

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

En una aplicación de consola, la codificación OEM también estará disponible usando

Console.OutputEncoding

Otros consejos

Esto es muy, muy antiguo. ODBC data de la edad de piedra, cuando Windows comenzó a tomar el control de MS-DOS. En aquel entonces, todavía se codificaba mucho texto en el juego de caracteres original de IBM-PC, denominado "Juego de caracteres OEM". por Microsoft. El conjunto estándar de IBM-PC tenía algunos caracteres acentuados y glifos pseudo gráficos en la mitad superior, códigos 0x80-0xff.

Demasiado limitado para la salida de texto en idiomas distintos del inglés, Microsoft comenzó a usar páginas de códigos, rangos de glifos de caracteres adecuados para un determinado grupo de idiomas. El conjunto de caracteres en inglés americano fue estandarizado por ANSI, esa etiqueta ahora está adherida (incorrectamente) a cualquier página de códigos que no sea OEM.

Ya nadie codifica texto en el juego de caracteres OEM, siguió el camino del dodo hace al menos 10 años. La configuración adecuada aquí es ANSI. Y manteniendo los dedos cruzados detrás de la espalda, la página de códigos utilizada para codificar el texto coincide con la página de códigos predeterminada de su sistema. Eso también es dodo, Unicode lo resolvió.

La respuesta corta a su pregunta, no hay relación directa.

La versión más larga:
CharacterSet para el " Schema.ini " el archivo puede ser ANSI o OEM .
ANSI y ASCII se refieren a cosas diferentes.

Puedes leer más aquí:
Comprensión de los caracteres ASCII y ANSI
Codificación ASCII vs ANSI por Alex Hoffman

Según tengo entendido, CharacterSet = ANSI es equivalente a Codificación. Predeterminado . El OEM podría estar ASCIIEncoding entonces.

Sin embargo, ANSI usa la página de códigos ANSI del sistema, por lo que pueden surgir incompatibilidades si se accede al mismo archivo desde computadoras con páginas de códigos diferentes.

He compilado mi propia referencia para cambiar entre los dos:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top