.NET 인코딩과 문자 세트 간의 관계
-
06-07-2019 - |
문제
해결책
ANSI는 현재 Windows ANSI 코드 페이지이며 인코딩과 동일합니다.
OEM은 일반적으로 콘솔 애플리케이션에서 사용하는 현재 OEM 코드 페이지입니다.
다음을 사용하여 얻을 수 있습니다.
Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage)
콘솔 애플리케이션에서 OEM 인코딩도 사용할 수 있습니다.
Console.OutputEncoding
다른 팁
이것은 정말로, 정말로 고대입니다. ODBC는 석기 시대부터 MS-DOS에서 Windows가 시작될 때부터 시작됩니다. 당시에는 많은 텍스트가 여전히 Microsoft가 "OEM 문자 세트"라는 원래 IBM-PC 문자 세트로 인코딩되었습니다. 표준 IBM-PC 세트에는 악센트가있는 캐릭터와 의사 그래픽 글리프가 상단 절반의 코드 0x80-0xff가있었습니다.
영어 이외의 언어에서 텍스트 출력에 너무 제한된 Microsoft는 특정 언어 그룹에 적합한 문자 글리프 범위를 사용하기 시작했습니다. American English 캐릭터 세트는 ANSI에 의해 표준화되었으며,이 레이블은 이제 모든 비 OEM 코드 페이지에 첨부되었습니다.
아무도 OEM 캐릭터 세트에서 텍스트를 인코딩하지 않으며, 적어도 10 년 전에 도도의 길을 갔다. 여기의 올바른 설정은 ANSI입니다. 텍스트를 인코딩하는 데 사용 된 코드 페이지가 시스템의 기본 코드 페이지와 일치하도록 손가락을 뒤로 교차시킵니다. 그것도 도도이기도합니다. 유니 코드는 그것을 해결했습니다.
귀하의 질문에 대한 짧은 대답은 직접적인 관계가 없습니다.
더 긴 버전 :
CharacterSet
"schema.ini"파일의 경우도 가능합니다 ANSI
또는 OEM
.
ANSI와 ASCII는 다른 것을 말합니다.
여기에서 더 많이 읽을 수 있습니다.
ASCII 및 ANSI 문자 이해
ALEX HOFFMAN의 ASCII 대 ANSI 인코딩
내 이해에서, characterSet = ansi는 다음과 같습니다. encoding.default. OEM은 asciiencoding 일 수 있습니다.
그러나 ANSI는 시스템 ANSI 코드 페이지를 사용하므로 코드 페이지가 다른 컴퓨터에서 동일한 파일에 액세스하는 경우 비 호환성이 발생할 수 있습니다.
나는 둘 사이를 전환하기 위해 내 자신의 참조를 컴파일했다.
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