ANSI 형식이란 무엇입니까?


답변:


246

ANSI 인코딩은 시스템의 표준 코드 페이지 (일반적으로 Windows)를 나타내는 데 사용되는 약간 일반적인 용어입니다. 서양 / 미국 시스템 에서는보다 적절하게 Windows-1252 라고 합니다. ( 다른 시스템에서 다른 특정 Windows 코드 페이지 를 나타낼 수 있습니다.) 이것은 기본적으로 ASCII 문자 세트확장으로 128 문자 코드가 추가 된 모든 ASCII 문자를 포함합니다. 이 차이는 ASCII가 "ANSI"인코딩이 7 비트가 아니라 8 비트이기 때문에 발생합니다 (ASCII는 현재 MSB 가 0으로 설정된 상태에서 거의 항상 8 비트 바이트로 인코딩 됨 ). 이 인코딩이 일반적으로 ANSI라고하는 이유에 대한 설명은 기사를 참조하십시오.

"ANSI"라는 이름은 실제 ANSI 표준과 일치하지 않지만 이름이 붙어 있기 때문에 잘못된 이름입니다. ANSI는 UTF-8과 다릅니다.


42
ANSI는 "약간"잘못된 이름이 아니라 완전히 잘못된 이름입니다. 이 이름은 그것이 의미하는 것은 ANSI 표준이 아니라는 것을 의미합니다. 그것은 흑백의 사실입니다. 그 말에 따르면, 우리는 너무 널리 사용되어 우리가 붙어 있습니다.
Nate CK

1
ANSI가 Windows 코드 페이지 1252가 아니라 코드 페이지 437 인 것으로 알고 있습니다. ANSI가 게시판 시스템 용으로 만들어진 그래픽을 언급했을 때, 나는 그 경우를 거의 보증 할 수 있습니다.
lordscarlet

@lordscarlet : ANSI는이를 표준화하지 않았지만 Windows-1252는 수퍼 셋으로 가장 가까운 (최소 Windows에서는) 가장 가깝습니다. 참조를 위해 en.wikipedia.org/wiki/ANSI_codepage#ANSI 를 참조하십시오.
Noldorin

4
"ANSI"는 ANSI 표준을 명확하게 참조하지 않지만 파일을 저장할 때 메모장에서 "인코딩 : ANSI"를 선택할 수 있다는 것은 사실입니다. 그리고 실제 질문은 "무엇을 의미합니까?"입니다. 이 답변은 지금까지 최고입니다.
Wernfried Domscheit

1
필자의 경우 ANSI는을 참조했습니다 windows-1254.
Ramazan Polat

59

기술적으로 ANSI는 US-ASCII와 동일해야합니다. 이는 ANSI 조직의 비준 버전의 ASCII 인 ANSI X3.4 표준을 나타냅니다 . 최상위 비트 문자 사용은 ASCII / ANSI에서 7 비트 문자 세트이므로 정의되지 않습니다.

그러나 DOS와 그 이후 Windows 커뮤니티에서이 용어를 오용 한 것은 "사용중인 시스템의 시스템 코드 페이지"라는 실질적 의미를 남겼습니다. 문자 당 다중 바이트 인코딩이 가능한 동아시아 시스템에서는 시스템 코드 페이지를 'mbcs'라고도합니다. 일부 코드 페이지는 최상위 바이트 클리어 바이트를 멀티 바이트 시퀀스의 후행 바이트로 사용할 수 있으므로 일반 ASCII와 엄격하게 호환되지는 않지만 여전히 "ANSI"라고합니다.

미국 및 서유럽 기본 설정에서“ANSI”는 Windows 코드 페이지 1252에 매핑됩니다. 이는 ISO-8859-1과 동일하지는 않습니다 (매우 유사합니다). 다른 기계에서는 전혀 다른 것이 될 수 있습니다. 이것은“ANSI”를 외부 인코딩 식별자로 전혀 쓸모 없게 만듭니다.


32

엄밀히 말하면 ANSI 인코딩과 같은 것은 없습니다. 구어체로 ANSI라는 용어는 여러 가지 다른 인코딩에 사용됩니다.

  1. ISO 8859-1
  2. Windows CP1252
  3. Windows 시스템의 현재 시스템 인코딩 (Win32 API 용어로).

그건 잘못이야 Windows 코드 페이지 1252는 ISO 8859-1을 기반으로 작성되었지만 완전히 동일하지는 않습니다. ANSI라는 용어는 ISO 8859-x 표준을 나타냅니다.
Patrik

17

옛날 옛적에 Microsoft는 다른 모든 사람들과 마찬가지로 7 비트 문자 집합을 사용했으며 ASCII를 핵심 하위 집합으로 유지했지만 자신에게 적합한 문자를 만들었습니다. 그런 다음 세계가 8 비트 인코딩으로 전환했으며 ISO-8859 제품군과 같은 국제 표준이 있다는 것을 깨달았습니다. 그 당시 국제 표준을 원하고 미국에 거주하고 있다면 ANSI (American National Standards Institute)에서 자체 브랜드와 번호로 국제 표준을 다시 게시 한 미국 표준 협회에서 구입했습니다. 국제 표준이 아닌 미국 표준 준수). 따라서 Microsoft의 ISO-8859 사본은 표지에 "ANSI"라고 말했습니다. 당시 마이크로 소프트는 표준에 익숙하지 않았기 때문에 ANSI가 다른 많은 표준도 발표했다는 것을 인식하지 마십시오. 따라서 그들은 "ANSI"라는 표지 이름으로 ISO-8859 제품군의 표준 (그리고 당시 표준을 이해하지 못했기 때문에 발명 한 변형)을 참조하여 Microsoft로 향했습니다. 사용자 문서 및 사용자 커뮤니티에. 약 30 년 전 이었지만 오늘날에도 여전히 그 이름을들을 수 있습니다.


표준은 산업에 관한 것이므로 프로그래머는 새로운 산업이기 때문에 표준에 익숙하지 않습니까?
CoffeDeveloper

1
마이크로 소프트가 창립 될 당시에는 새로운 산업이 아니었다.
Michael Kay

Microsoft는 일반적으로 상호 운용성에 대한 문제가 있고 논쟁의 여지가 있습니다. 그들이 1990 년대 후반에 표준을 직접 피하는 대신 "포용하고 확장"하기로 결정했을 때, 그것은 여전히 ​​적절한 상호 운용성에 대한 책임있는 접근 방식은 아니지만 놀라운 변화였습니다. ( 기존의 표준 만 준수한다면 진전이 불가능하다고 주장 할 수 있지만, 이것이 이런 식으로하는 주요한 이유는 분명하지 않습니다.)
tripleee

14

ASCII 는 128 개의 기호로 7 비트 코드 페이지를 정의합니다. ANSI는 이것을 8 비트로 확장하고 심볼 128-255에 대한 몇 가지 다른 코드 페이지가 있습니다.

이름 지정 ANSI는 실제로이 코드 페이지를 정의하는 ISO / IEC 8859 표준이므로 올바르지 않습니다. 참조 ISO / IEC 8859을 참조. 16 개의 코드 페이지 ISO / IEC 8859-1 ~ ISO / IEC 8859-16이 있습니다.

Windows-1252 는 다시 ISO / IEC 8859-1을 기반으로 하며 128 ~ 159 범위 의 C1 컨트롤 범위에서 일부 수정되었습니다. ISO와 8859 사이에 하이픈이 있습니다.


5

기본적으로 "ANSI"는 Windows의 레거시 코드 페이지를 나타냅니다. 이 주제에 대한 Raymond Chen의 기사를 참조하십시오 .

그 원인은 Windows 코드 페이지 1252가 원래 ISO 표준 8859-1이 된 ANSI 초안을 기반으로했기 때문입니다.

첫 번째 127 문자는 대부분의 코드 페이지에서 ASCII와 동일하지만 상위 문자는 다양합니다.

그러나 ANSI는 CP1252 또는 Latin 1을 자동으로 의미 하지 않습니다 .

그럼에도 불구하고 모든 혼란은 오늘날 그러한 문제를 피하고 유니 코드를 사용해야합니다.


4

PC가 "서양"PC가 아니고 어떤 코드 페이지가 사용되는지 모르는 경우이 페이지를 살펴보십시오. 자국어 지원 (NLS) API 참조

[Microsoft는이 참조를 제거했습니다. 웹 아카이브 자국어 지원 (NLS) API 참조 양식을 사용하십시오.

또는 레지스트리를 쿼리 할 수 ​​있습니다.

C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /f ACP

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
    ACP    REG_SZ    1252

End of search: 1 match(es) found.

C:\>

2

1 바이트 문자를 사용할 때 ASCII 형식은 처음 127자를 정의합니다. 128-255의 확장 문자는 다양한 ANSI 코드 페이지에 의해 정의되어 다른 언어를 제한적으로 지원합니다. ANSI 인코딩 문자열을 이해하려면 사용하는 코드 페이지를 알아야합니다.


1

"ANSI"텍스트가 스트리밍 텍스트의 흐름을 변경하기 위해 ANSI.SYS 드라이버를 통해 DOS에서 사용할 수있는 의사 VT-100 이스케이프 코드를 언급했을 때를 기억합니다 .... 아마도 당신이 말하는 것은 아니지만 http : //en.wikipedia.org/wiki/ANSI_escape_code


-4

ANSI (일명 Windows-1252 / WinLatin1)는 라틴 알파벳의 문자 인코딩으로 ISO-8859-1 과 상당히 유사합니다 . Wikipedia에서 살펴볼 수 있습니다 .


6
모두를위한 CP1252는 아닙니다. 지역에 따라 다릅니다.
Joey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.