2017-11-04 13 views
0

"문자 코드"/ "코드 포인트"와 "문자 인코딩"이라는 용어를 설명하는 "문자 코드 문제에 대한 자습서"(http://jkorpela.fi/chars.html#code)가 있습니다.ASCII 코드 포인트 대 문자 인코딩

전자는 문자에 할당 된 정수입니다. 예를 들어 문자 A는 65 자입니다. 문자 Z 드는 이러한 Z 드점이 하나 이상의 바이트를 통해 표현되는 f}을 정의합니다.

오래된 ASCII의 경우 autor는 다음과 같이 말합니다. "ASCII 표준에 지정된 문자 인코딩은 매우 간단하며 코드 번호가 255를 초과하지 않는 문자 코드 중 가장 분명합니다. 각 코드 번호는 같은 값 옥텟. "

그래서

65 나는 127 코드 포인트가 ASCII 127 개 문자를 가지고 있기 때문에 각각의 코드 포인트는 항상 여기서 A에 대한 코드 포인트 1000 0001

로 인코딩 될 것입니다 1 바이트 씩 인코딩됩니다.

나는 이것을 요약하면 I ASCII 문자를 인코딩하려면 다음 단계가 있습니다

  1. 숫자 (코드 포인트)를 할당 각 문자 (예 : A-> 65)
  2. 인코딩 A를 문자로를 동일한 값을 갖는 바이트 (예를 들어, 1000 0001)
문자 A 이처럼

하고

것이다 B -> 65 -> 1,000 0,001 B -> 66 -> 1000 0010

내 질문은 :

왜 ASCII에서이 코드 포인트의 분리 및 인코딩? ASCII에는 단 하나의 인코딩 만 있습니다. 그래서 적어도 ASCII의 경우 중간 단계 (정수로 매핑)가 완료된 이유는 분명하지 않습니다.

같은 A 직접 인코딩 -> 1,000 0,001 B -> 1,000 0,010

가능 여부 있을까? ASCII 문자에 대해 여러 개의 인코딩을 사용한다면 별거는 합리적인 편이지만 인코딩 양식이 하나만 있으면 나를 이해할 수 없습니다.

답변

0

네가 맞아. 각 개념은 반드시 특정 인코딩에 대해 식별 가능한 구현을 요구하지 않습니다. 그러나 일반적으로 문자 집합과 인코딩을 논의 할 때 모든 개념을 구별하는 것이 좋습니다.

실제로 ASCII는 2 개의 인코딩 (7 비트와 8 비트 중 하나)을 가질 수 있습니다. 7 비트는 바이트의 8 번째 비트에 패리티 비트가있는 구성표와 함께 사용되었습니다. 유니 코드는 UTF-8, UTF-16 및 UTF-32를 비롯한 많은 인코딩을 지원합니다.

코드 단위가 누락되었습니다. 인코딩은 코드 포인트를 코드 단위의 시퀀스로 매핑합니다. 코드 단위는 고정 된 크기의 정수입니다. 아시다시피, 8 비트보다 큰 정수는 바이트 순서 (일명 엔디안)를가집니다. 이로 인해 빅 엔디안과 리틀 엔디안 변형이있는 UTF-16 및 UTF-32가됩니다.


전산 텍스트의 기본 규칙 : 파일 또는 스트림이 기록 된 인코딩으로 읽습니다.텍스트를 나타내는 바이트는 선언, 표준, 규칙, 사양 등과 같은 인코딩에 대한 지식을 수반해야합니다.


ASCII 코드에는 128 개의 코드 포인트가 있습니다. 대부분의 경우 ASCII가 언급되었지만 정확하지 않습니다. ASCII 또는 수정에 대한 스펙을 요청하십시오.

+0

ASCII와 같은 단일 바이트 인코딩에서 65와 같은 코드 포인트와 해당 인코딩을 구분할 수있는 이점이 있습니까? – knowledge

+0

ASCII가 유일한 문자 세트이면 yes입니다. 그러나 그것은 지금까지 유일한 문자 세트가 아니 었습니다. 개념에는 다른 속성이 있습니다. 예를 들어 코드 포인트를 계산하는 것은 유용하지만 인코딩의 바이트 값은 계산하지 않는 것이 좋습니다. 하나는 문자 집합간에 코드 점을 전달할 수 있지만 코드 단위를 비교하면 완전히 다른 수준으로 이동합니다. –