Relação entre .NET Codificação e conjunto de caracteres
-
06-07-2019 - |
Pergunta
A relação de que entre CharacterSet aqui:
http://msdn.microsoft.com/en-us /library/ms709353(VS.85).aspx
e ascii codificação aqui:
http://msdn.microsoft .com / pt-br / library / system.text.asciiencoding.getbytes (VS.71) .aspx
Solução
ANSI é a página de código Windows ANSI atual, equivalente a Encoding.Default.
OEM é a página de código OEM atual tipicamente usado por aplicativos de console.
Você pode obter esta usando:
Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage)
Em um aplicativo de console, a codificação OEM também estará disponível usando
Console.OutputEncoding
Outras dicas
Este é muito, muito antiga. datas ODBC a partir da idade da pedra, de volta quando o Windows a partir assumindo o lugar de MS-DOS. Naquela época, os lotes de texto ainda foi codificado no conjunto original de caracteres IBM-PC, chamado de "conjunto de caracteres OEM" pela Microsoft. O conjunto IBM-PC padrão teve alguns caracteres acentuados e glifos pseudo gráficos na metade superior, códigos 0x80-0xff.
Muito limitado para a saída de texto em idiomas diferentes do inglês, a Microsoft começou a usar páginas de código, gamas de glifos de caracteres apropriados para um determinado grupo de idioma. O conjunto de Inglês Americano de caracteres foram padronizados pela ANSI, esse rótulo é agora anexado (incorretamente) a qualquer página de código não-OEM.
Texto Ninguém codifica no conjunto de caracteres OEM mais, ele seguiu o caminho do dodo pelo menos 10 anos atrás. A configuração adequada aqui é ANSI. E mantendo os dedos cruzados atrás das costas que a página de código usada para codificar o texto corresponde página de código padrão do sistema. Que de dodo também, Unicode resolveu.
A curta resposta à sua pergunta, não há nenhuma relação direta.
A versão mais longa:
CharacterSet
para o arquivo "Schema.ini" pode ser ANSI
ou OEM
.
ANSI e ASCII se referir a coisa diferente.
Você pode ler mais aqui:
ASCII Compreensão e Caracteres ANSI
ASCII vs ANSI codificação por Alex Hoffman
No meu entendimento, CharacterSet = ANSI é equivalente a Encoding.Default . OEM pode ser ASCIIEncoding então.
No entanto, ANSI usa a página de código ANSI do sistema, de modo que podem surgir incompatibilidades se o mesmo arquivo é acessado a partir de computadores com diferentes páginas de código.
Eu compilei minha própria referência, a fim de alternar entre os dois:
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