Relación entre codificación .NET y juego de caracteres
-
06-07-2019 - |
Pregunta
Cuál es la relación entre CharacterSet aquí:
http://msdn.microsoft.com/en-us /library/ms709353(VS.85).aspx
y codificación ascii aquí:
http://msdn.microsoft .com / es-us / library / system.text.asciiencoding.getbytes (VS.71) .aspx
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