[encoding] 인코딩과 문자셋의 차이점은 무엇입니까?

텍스트 인코딩과 문자 세트가 혼란 스럽습니다. 여러 가지 이유로, 나는 다가오는 작업에서 비 유니 코드, 비 UTF8을 배워야합니다.

“ISO-2022-JP”에서와 같이 이메일 헤더에 “charset”이라는 단어가 있지만 텍스트 편집기에는 그러한 인코딩이 없습니다. (다른 텍스트 편집기를 둘러 보았습니다.)

텍스트 인코딩과 문자셋의 차이점은 무엇입니까? 유스 케이스 예제를 보여 주시면 감사하겠습니다.



답변

원래:

  1. 문자 집합은 사용할 수있는 문자 집합입니다
  2. 인코딩은 이러한 문자가 메모리에 저장되는 방식입니다

답변

모든 인코딩에는 이와 관련된 특정 문자 집합이 있지만 주어진 문자 집합에 대해 둘 이상의 인코딩이있을 수 있습니다. 문자 집합은 단순히 문자 집합처럼 들립니다. 특정 스크립트 나 언어를위한 문자를 포함하여 많은 문자 집합이 있습니다.

그러나 우리는 거의 모든 세계 스크립트를 표현할 수있는 문자 집합을 포함하는 유니 코드로의 전환 과정을 잘 진행하고 있습니다. 그러나 유니 코드에는 여러 가지 인코딩이 있습니다. 인코딩은 문자열을 바이트 문자열에 매핑하는 방법입니다. 유니 코드 인코딩의 예로는 UTF-8 , UTF-16 BEUTF-16 LE가 있습니다. 이들 각각은 특정 응용 프로그램 또는 기계 아키텍처에 장점이 있습니다.


답변

다른 답변 외에도이 기사는 잘 읽은 것 같습니다.
http://www.joelonsoftware.com/articles/Unicode.html

이 기사의 제목 은 Joel Spolsky가 쓴 ” 유니 코드 및 문자 집합에 대해 반드시 알아야 할 절대 최소 모든 소프트웨어 개발자 “입니다 (변명 없음) . 이 수필은 10 세 이상이지만 (불행히도) 내용은 여전히 ​​유효합니다 …


답변

문자 인코딩은 다음으로 구성됩니다.

  1. 지원되는 문자 세트
  2. 문자와 정수 사이의 매핑 ( “코드 포인트”)
  3. 코드 포인트가 일련의 “코드 단위”로 인코딩되는 방식 (예 : UTF-16의 경우 16 비트 단위)
  4. 코드 단위가 바이트로 인코딩되는 방법 (예 : 빅 엔디안 또는 리틀 엔디안)

1 단계 자체는 “문자 레퍼토리”또는 추상 “문자 세트”이며 # 1 + # 2 = “코딩 된 문자 세트”입니다.

그러나 유니 코드가 대중화되고 동아시아 인을 제외한 모든 사람들이 단일 바이트 인코딩을 사용하기 전에는 3 단계와 4 단계가 사소한 작업이었습니다 (코드 포인트 = 코드 단위 = 바이트). 따라서 이전 프로토콜은 “문자 인코딩”과 “코드화 된 문자 세트”를 명확하게 구분하지 못했습니다. 오래된 프로토콜은 charset실제로 인코딩을 의미 할 때 사용 합니다.


답변

앞으로 방문하는 사람들에게 더 많은 빛을 비추는 것이 도움이 되길 바랍니다.


문자 세트

각 언어에 문자가 있으며 해당 문자의 모음은 해당 언어의 “문자 세트”를 형성합니다. 문자가 인코딩되면 고유 식별자 또는 코드 포인트라는 번호가 할당됩니다. 컴퓨터에서이 코드 포인트는 하나 이상의 바이트로 표시됩니다.

문자 집합의 예 : ASCII (모든 영어 문자 포함), ISO / IEC 646, 유니 코드 (세계 모든 살아있는 언어의 문자 포함)

코딩 된 문자 세트

코드화 된 문자 세트는 각 문자에 고유 번호가 지정된 세트입니다. 이 고유 번호를 “코드 포인트”라고합니다.
코드화 된 문자 세트를 코드 페이지라고도합니다.

부호화

인코딩은 동일한 인코딩 체계를 사용하여 다른 시스템에서 문자를 균일하게 읽고 쓸 수 있도록 코드 포인트를 일부 바이트로 매핑하는 메커니즘입니다.

인코딩 예 : ASCII, UTF-8, UTF-16, UTF-32와 같은 유니 코드 인코딩 체계

위의 3 가지 개념의 정교화

  • Devanagari 문자 세트의 문자 ‘क’ 는 UTF-16 인코딩을 사용할 때 2 바이트 ( ) 로 표시되는 2325 의 10 진수 코드 포인트 를 갖습니다.09 15
  • “ISO-8859-1″인코딩 체계에서 “ü”(이것은 라틴 문자 집합의 문자 일 뿐임)는 16 진수 값으로 표현되는 FC반면 “UTF-8” C3 BC에서는 UTF-16으로로 표현 됩니다 FE FF 00 FC.
  • 예를 들어 “ISO-8859-1″(라틴어로도 불림)에서 문자 ‘é’의 십진 코드 포인트 값은 233이지만 다른 인코딩 체계는 동일한 코드 포인트를 사용하여 다른 문자를 나타낼 수 있습니다. 그러나 ISO 8859-5 동일한 코드 포인트는 키릴 문자 ‘щ’를 나타냅니다.
  • 반면, 유니 코드 문자 집합의 단일 코드 포인트는 실제로 문서에 사용 된 인코딩에 따라 다른 바이트 시퀀스에 매핑 될 수 있습니다. UTF-16 인코딩 ( 09 15), UTF-8 ( E0 A4 95)이있는 3 바이트 또는 UTF-32가있는 4 바이트 인 코드 포인트 2325 (16 진수 표기법에서 915)가있는 Devanagari 문자 क는 2 바이트로 표시됩니다. ( 00 00 09 15)

답변

문자 집합 또는 문자 레퍼토리는 단순히 문자 집합 (정렬되지 않은 모음)입니다. 코드화 된 문자 세트는 레퍼토리의 각 문자에 정수 ( “코드 포인트”)를 지정합니다. 인코딩은 코드 포인트를 바이트 스트림으로 명확하게 나타내는 방법입니다.


답변

그것을 위해 구글했다.
http://en.wikipedia.org/wiki/Character_encoding

그 차이는 미묘한 것 같습니다. 문자셋이라는 용어는 실제로 유니 코드에는 적용되지 않습니다. 유니 코드는 일련의 추상화를 거칩니다. 추상 문자-> 코드 포인트-> 코드 포인트를 바이트로 인코딩.

문자셋은 실제로 이것을 건너 뛰고 문자에서 바이트로 직접 점프합니다. 바이트 순서 <-> 문자 순서

간단히 말해서, 인코딩 : 코드 포인트-> 바이트 문자셋 : 문자-> 바이트