È stato utile?

Soluzione

ANSI è l'attuale codepage ANSI di Windows, equivalente a Encoding.Default.

OEM è l'attuale codepage OEM generalmente utilizzata dalle applicazioni della console.

Puoi ottenerlo usando:

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

In un'applicazione console, la codifica OEM sarà disponibile anche utilizzando

Console.OutputEncoding

Altri suggerimenti

Questo è davvero molto antico. ODBC risale all'età della pietra, quando Windows iniziò a prendere il posto di MS-DOS. All'epoca, un sacco di testo era ancora codificato nel set di caratteri IBM-PC originale, chiamato "OEM Character Set" da Microsoft. Il set IBM-PC standard aveva alcuni caratteri accentati e glifi pseudo grafici nella metà superiore, codici 0x80-0xff.

Troppo limitato per l'output di testo in lingue non inglesi, Microsoft ha iniziato a utilizzare pagine di codice, intervalli di glifi di caratteri adatti per un determinato gruppo di lingue. Il set di caratteri inglese americano è stato standardizzato da ANSI, quell'etichetta è ora attaccata (in modo errato) a qualsiasi tabella codici non OEM.

Nessuno codifica più il testo nel set di caratteri OEM, è andato sulla strada del dodo almeno 10 anni fa. L'impostazione corretta qui è ANSI. E tenendo le dita incrociate dietro la schiena, la tabella codici utilizzata per codificare il testo corrisponde alla tabella codici predefinita del sistema. Anche questo è dodo, Unicode l'ha risolto.

La breve risposta alla tua domanda, non esiste una relazione diretta.

La versione più lunga:
CharacterSet per " Schema.ini " il file può essere ANSI o OEM .
ANSI e ASCII fanno riferimento a cose diverse.

Puoi leggere di più qui:
Comprensione dei caratteri ASCII e ANSI
ASCII vs ANSI Encoding di Alex Hoffman

Da quanto ho capito, CharacterSet = ANSI è equivalente a Encoding.Default . L'OEM potrebbe essere ASCIIEncoding allora.

Tuttavia, ANSI utilizza la tabella codici ANSI del sistema, pertanto potrebbero sorgere incompatibilità se si accede allo stesso file da computer con tabelle codici diverse.

Ho compilato il mio riferimento per passare tra i due:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top