답변:
ASCII 는 실제로 원래 7 비트 코드로 인식되었습니다. 이것은 8 비트 바이트가 유비쿼터스가되기 훨씬 전에 수행되었으며, 1990 년대까지도 자체 목적을 위해 각 텍스트 바이트의 8 비트를 사용할 수 있다고 가정하는 소프트웨어를 찾을 수있었습니다 ( "8 비트 정리가 아님"). 요즘 사람들 은 이것을 0x80에서 0xFF까지의 바이트가 정의 된 의미가없는 8 비트 코딩으로 생각 하지만 그것은 retcon 입니다.
8 번째 비트를 사용하는 수십 개의 텍스트 인코딩이 있습니다. ASCII 호환 여부와 고정 너비 또는 가변 너비로 분류 할 수 있습니다. ASCII 호환 은 컨텍스트에 관계없이 0x00에서 0x7F까지의 값을 가진 단일 바이트가 ASCII에서와 동일한 문자를 인코딩 함을 의미합니다 . 가능하다면 ASCII와 호환되지 않는 텍스트 인코딩과 관련이있는 것은 원하지 않습니다. ASCII를 예상하는 순진한 프로그램은 비극적이고 종종 보안을 침해하는 방식으로 잘못 해석하는 경향이 있습니다. 요즘에는 너무 많이 사용되지 않아서 (예를 들어) HTML5는 UTF-16을 제외하고는 공개 웹에서 사용을 금지합니다 . 나는 그들에 대해 더 이상 이야기하지 않을 것입니다.
고정 너비 인코딩은 모든 문자가 동일한 바이트 수를 사용하여 인코딩됩니다. ASCII 호환이 되려면 고정 포함 인코딩이 1 바이트 만 사용하여 모든 문자를 인코딩해야하므로 256 자 이하일 수 있습니다. 오늘날 가장 일반적인 인코딩은 다음과 같습니다. 은 ISO 8859-1 의 확장 인 Windows-1252 입니다.
오늘날 알아야 할 가치가있는 가변 너비 ASCII 호환 인코딩은 하나 뿐이지 만 매우 중요합니다. 모든 유니 코드를 ASCII 호환 인코딩으로 압축하는 UTF-8 입니다. 당신이 그것을 관리 할 수 있다면 당신은 정말로 이것을 사용하고 싶습니다.
마지막으로 "ASCII"는 오늘날 원래 표준 (ANSI X3.4-1968)이 아닌 유니 코드에서 실용적인 정의를 역사적으로 ASCII 127 자 레퍼토리에는 수십 가지 변형이 있었기 때문입니다. 구두점은 프랑스어 텍스트 전송을 용이하게하기 위해 악센트 부호가있는 문자로 대체 될 수 있습니다. 오늘날 이러한 모든 변형은 더 이상 사용되지 않으며 사람들이 "ASCII"라고 말하면 값이 0x00에서 0x7F 인 바이트가 유니 코드 코드 포인트 U + 0000에서 U + 007F를 인코딩한다는 것을 의미합니다. 이는 기술 표준을 작성하는 경우에만 중요 할 것입니다.
ASCII의 역사와 그 이전의 인코딩에 관심이 있다면 "문자 코드의 진화, 1874-1968"(samizdat 사본 : http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf ) 그런 다음 참조를 추적합니다 (그 중 대부분은 온라인에서 사용할 수 없으며 대학 도서관에 액세스해도 찾기 어려울 수 있습니다).
원래 ASCII 테이블은 7 비트로 인코딩 되므로 128 자입니다.
오늘날 대부분의 독자 / 편집기 는 8 비트로 인코딩되고 256 자 ( Á , Ä , Œ , é , è 및 유럽 언어에 유용한 기타 문자 포함 )를 사용하는 "확장 된"ASCII 테이블 ( ISO 8859-1 ) 을 사용합니다. 수학적 글리프 및 기타 기호).
기본 ASCII 테이블과 UTF-8을 사용하는 것과 동일한 인코딩 (의미가 있지만 0x41
입니다 모두 코드에), 그것은 "라틴 확장-A"블록에 대한 동일한 인코딩을 공유하지 않습니다. 단품 또는 피냐타 와 같은 단어에 이상한 문자가 나타나는 경우가 있습니다.
ASCII 인코딩은 7 비트이지만 실제로 ASCII로 인코딩 된 문자는 7 비트 그룹에 저장되지 않습니다. 대신 하나의 ASCII가 바이트에 저장되며 MSB는 일반적으로 0으로 설정됩니다 (예, ASCII로 낭비 됨).
텍스트 편집기에서 ASCII 문자 집합에 문자열을 입력하고 인코딩을 ASCII로 설정하고 2 진 / 16 진을 확인하여이를 확인할 수 있습니다.
곁에 : (엄격하게) ASCII 인코딩의 사용은 이제 흔하지 않습니다. UTF-8을 선호합니다 ( 위에서 언급 한 MSB를 낭비 하지 않습니다 . 실제로 MSB가 1이면 코드 포인트가 1 바이트 이상으로 인코딩됨을 나타냅니다).
원래 ASCII 코드는 0에서 127까지 번호가 매겨진 128 개의 다른 문자를 제공했습니다. ASCII a 7 비트는 동의어입니다. 8 비트 바이트가 공통 저장 요소이기 때문에 ASCII는 외국어 및 기타 기호에 사용되는 128 개의 추가 문자를위한 공간을 남깁니다. 그러나 7 비트 코드는 8 비트 코드 이전에 만들어졌습니다. 정보 교환을위한 미국 표준 코드 (American Standard Code for Information Interchange)의 ASCII 약자 초기 인터넷 메일 시스템에서는 7 비트 ASCII 코드 만 지원했습니다. 이는 Suck 시스템을 통해 프로그램과 멀티미디어 파일을 실행할 수 있기 때문입니다. 이러한 시스템은 8 비트 바이트를 사용하지만 MIME, UUcoding 및 BinHex와 같은 코딩 방법을 사용하여 7 비트 형식으로 변환되어야합니다. 이는 8 비트가 7 비트 문자로 변환되어 인코딩을 위해 추가 바이트가 추가되었음을 의미합니다.
ASCII를 7 비트 코드로 호출 할 때 가장 왼쪽 비트가 부호 비트로 사용되므로 7 비트로 최대 127까지 쓸 수 있습니다. 이는 ASCII의 최대 imam 값이 0에서 255까지이기 때문에 -126에서 127까지를 의미합니다. 마지막 비트가 부호 비트로 간주되는 경우 7 비트의 인수로만 만족됩니다.