ANSI 및 유니코드와 같은 문자 인코딩이란 무엇이며 어떻게 다릅니까?
게시 됨: 2022-01-29ASCII, UTF-8, ISO-8859... 이 이상한 이름이 떠돌아다니는 것을 보았을 수도 있지만 실제로는 무엇을 의미합니까? 문자 인코딩이 무엇이며 이러한 두문자어가 화면에 표시되는 일반 텍스트와 어떻게 관련되는지 설명하면서 계속 읽으십시오.
기본 빌딩 블록
문어에 대해 이야기할 때 우리는 문자가 단어의 구성 요소이며 문장, 단락 등을 구성한다고 말합니다. 문자는 소리를 나타내는 기호입니다. 언어에 대해 이야기할 때 어떤 종류의 의미를 형성하기 위해 함께 모인 소리 그룹에 대해 이야기하고 있습니다. 각 언어 시스템에는 이러한 의미를 제어하는 복잡한 규칙과 정의가 있습니다. 단어가 있으면 그 언어가 무엇인지 모르고 그 언어를 사용하는 다른 사람들과 함께 사용하지 않는 한 아무 소용이 없습니다.
(Grantha, Tulu 및 Malayalam 스크립트 비교, Wikipedia의 이미지)
컴퓨터 세계에서는 "문자"라는 용어를 사용합니다. 문자는 특정 매개변수로 정의되는 일종의 추상 개념이지만 의미의 기본 단위입니다. 라틴어 'A'는 그리스어 '알파'나 아랍어 'alif'와 같지 않은데, 그 이유는 문맥이 다르기 때문입니다. 언어도 다르고 발음도 약간 다르기 때문에 서로 다른 문자라고 말할 수 있습니다. 문자의 시각적 표현을 "글리프"라고 하며 다양한 글리프 세트를 글꼴이라고 합니다. 캐릭터 그룹은 "세트" 또는 "레퍼토리"에 속합니다.
단락을 입력하고 글꼴을 변경하면 문자의 음성 값이 변경되는 것이 아니라 모양이 변경됩니다. 그것은 단지 화장품일 뿐입니다(그러나 중요하지 않은 것은 아닙니다!). 고대 이집트 및 중국어와 같은 일부 언어에는 표의 문자가 있습니다. 이것들은 소리가 아닌 전체 아이디어를 나타내며 발음은 시간과 거리에 따라 달라질 수 있습니다. 한 캐릭터를 다른 캐릭터로 대체하면 아이디어를 대체하는 것입니다. 단순히 글자를 바꾸는 것이 아니라 표의 문자를 바꾸는 것입니다.
문자 인코딩
(위키피디아에서 가져온 이미지)
키보드로 무언가를 입력하거나 파일을 로드할 때 컴퓨터는 무엇을 표시할지 어떻게 압니까? 이것이 바로 문자 인코딩의 목적입니다. 컴퓨터의 텍스트는 실제로 문자가 아니라 쌍으로 된 일련의 영숫자 값입니다. 문자 인코딩은 철자가 어떤 소리가 어떤 문자에 해당하는지 지시하는 것처럼 값이 어떤 문자에 해당하는지에 대한 키 역할을 합니다. 모스 부호는 일종의 문자 인코딩입니다. 경고음과 같은 길고 짧은 단위 그룹이 문자를 나타내는 방법을 설명합니다. 모스 부호에서 문자는 영문자, 숫자 및 마침표입니다. 문자, 숫자, 악센트 표시, 구두점, 국제 기호 등으로 변환되는 많은 컴퓨터 문자 인코딩이 있습니다.
종종 이 주제에서 "코드 페이지"라는 용어도 사용됩니다. 기본적으로 특정 회사에서 사용하는 문자 인코딩이며 종종 약간 수정됩니다. 예를 들어 Windows 1252 코드 페이지(이전의 ANSI 1252)는 ISO-8859-1의 수정된 형식입니다. 이들은 대부분 동일한 시스템에 특정한 표준 및 수정된 문자 인코딩을 참조하는 내부 시스템으로 사용됩니다. 초기에는 컴퓨터가 서로 통신하지 않았기 때문에 문자 인코딩은 그다지 중요하지 않았습니다. 인터넷이 대중화되고 네트워킹이 보편화되면서 우리도 모르는 사이에 일상 생활에서 점점 더 중요해지고 있습니다.
다양한 유형
(이미지 출처: 사라 소시악)
다양한 문자 인코딩이 있으며 그 이유도 많습니다. 사용하기로 선택한 문자 인코딩은 요구 사항에 따라 다릅니다. 러시아어로 의사 소통하는 경우 키릴 자모를 잘 지원하는 문자 인코딩을 사용하는 것이 좋습니다. 한국어로 의사소통을 한다면 한글과 한자를 잘 표현하는 것이 필요할 것입니다. 당신이 수학자라면, 과학 및 수학 기호는 물론 그리스어와 라틴어 글리프가 모두 잘 표현된 것을 원할 것입니다. 당신이 장난꾸러기라면, 거꾸로 된 텍스트가 도움이 될 것입니다. 그리고 특정 사람이 이러한 유형의 문서를 모두 볼 수 있도록 하려면 매우 일반적이고 쉽게 액세스할 수 있는 인코딩이 필요합니다.
좀 더 일반적인 몇 가지를 살펴보겠습니다.
(ASCII 테이블에서 발췌, asciitable.com의 이미지)

- ASCII – 정보 교환을 위한 미국 표준 코드는 오래된 문자 인코딩 중 하나입니다. 원래 전신 코드를 기반으로 고안되었으며 시간이 지남에 따라 더 많은 기호와 일부 구식의 인쇄되지 않은 제어 문자를 포함하도록 발전했습니다. 악센트가 있는 문자가 없는 라틴 알파벳으로 제한되기 때문에 현대 시스템에서 얻을 수 있는 가장 기본적인 것입니다. 7비트 인코딩은 128자만 허용하므로 전 세계적으로 여러 비공식 변형이 사용됩니다.
- ISO-8859 – 국제 표준화 기구(International Organization for Standardization)에서 가장 널리 사용되는 문자 인코딩 그룹은 번호 8859입니다. 각 특정 인코딩은 숫자로 지정되며 종종 설명적인 이름이 앞에 붙습니다(예: ISO-8859-3(Latin-3), ISO- 8859-6(라틴어/아랍어). ASCII의 상위 집합입니다. 즉, 인코딩의 처음 128개 값이 ASCII와 동일합니다. 그러나 8비트이고 256자를 허용하므로 거기에서 빌드하고 훨씬 더 넓은 문자 배열을 포함하며 각 특정 인코딩은 다른 기준 세트에 초점을 맞춥니다. Latin-1에는 악센트가 있는 문자와 기호가 많이 포함되어 있었지만 나중에 유로 기호와 같은 업데이트된 글리프가 포함된 Latin-9라는 수정 세트로 대체되었습니다.
(unicode.org에서 Tibetan 스크립트, Unicode v4 발췌)
- 유니코드 – 이 인코딩 표준은 보편성을 목표로 합니다. 현재 여러 블록으로 구성된 93개의 스크립트가 포함되어 있으며 더 많은 작업이 진행 중입니다. 유니코드는 글리프를 직접 코딩하는 대신 각 값이 "코드 포인트"로 더 이동한다는 점에서 다른 문자 집합과 다르게 작동합니다. 이들은 문자에 해당하는 16진수 값이지만 글리프 자체는 웹 브라우저와 같은 프로그램에서 분리된 방식으로 제공됩니다. 이러한 코드 포인트는 일반적으로 U+0040('@'으로 변환)으로 표시됩니다. 유니코드 표준에 따른 특정 인코딩은 UTF-8 및 UTF-16입니다. UTF-8은 ASCII와의 최대 호환성을 허용하려고 시도합니다. 8비트이지만 대체 메커니즘과 문자당 여러 값 쌍을 통해 모든 문자를 허용합니다. UTF-16은 표준과의 보다 완전한 16비트 호환성을 위해 완벽한 ASCII 호환성을 버립니다.
- ISO-10646 – 이것은 실제 인코딩이 아니라 ISO에서 표준화한 유니코드의 문자 집합일 뿐입니다. HTML에서 사용하는 캐릭터 레퍼토리이기 때문에 가장 중요합니다. 왼쪽에서 오른쪽 스크립팅과 함께 데이터 정렬 및 오른쪽에서 왼쪽을 허용하는 유니코드에서 제공하는 고급 기능 중 일부가 누락되었습니다. 그래도 다양한 스크립트를 사용할 수 있고 브라우저에서 글리프를 해석할 수 있으므로 인터넷에서 사용하기에 매우 적합합니다. 이것은 현지화를 다소 쉽게 만듭니다.
어떤 인코딩을 사용해야 합니까?
글쎄, ASCII는 대부분의 영어 사용자에게 작동하지만 다른 많은 사람들에게는 작동하지 않습니다. 대부분의 서유럽 언어에서 작동하는 ISO-8859-1을 더 자주 보게 될 것입니다. ISO-8859의 다른 버전은 키릴 자모, 아랍어, 그리스어 또는 기타 특정 스크립트에서 작동합니다. 그러나 동일한 문서나 동일한 웹 페이지에 여러 스크립트를 표시하려는 경우 UTF-8을 사용하면 훨씬 더 나은 호환성을 제공합니다. 또한 적절한 구두점, 수학 기호 또는 정사각형 및 체크박스와 같은 평범한 문자를 사용하는 사람들에게도 매우 효과적입니다.
(하나의 문서에 있는 여러 언어, gujaratsamachar.com의 스크린샷)
그러나 각 세트에는 단점이 있습니다. ASCII는 구두점에 제한이 있으므로 인쇄상 올바른 편집에는 매우 적합하지 않습니다. 이상한 글리프 조합을 사용하기 위해 Word에서 복사/붙여넣기를 입력한 적이 있습니까? 이것이 ISO-8859의 단점, 더 정확하게 말하면 OS별 코드 페이지와의 상호 운용성입니다(우리는 Microsoft를 보고 있습니다!). UTF-8의 주요 단점은 응용 프로그램 편집 및 게시에 대한 적절한 지원이 부족하다는 것입니다. 또 다른 문제는 브라우저가 UTF-8로 인코딩된 문자의 바이트 순서 표시를 해석하지 않고 표시하는 경우가 많다는 것입니다. 이로 인해 원치 않는 글리프가 표시됩니다. 그리고 물론 한 인코딩을 선언하고 웹 페이지에서 적절하게 선언/참조하지 않고 다른 인코딩의 문자를 사용하면 브라우저에서 올바르게 렌더링하고 검색 엔진에서 적절하게 색인을 생성하기 어렵습니다.
자신의 문서, 원고 등의 경우 작업을 완료하는 데 필요한 모든 것을 사용할 수 있습니다. 그러나 웹에 관한 한, 대부분의 사람들은 바이트 순서 표시를 사용하지 않는 UTF-8 버전을 사용하는 데 동의하지만 완전히 만장일치가 아닙니다. 보시다시피 각 문자 인코딩에는 고유한 용도, 컨텍스트, 강점과 약점이 있습니다. 최종 사용자는 이 문제를 처리할 필요가 없을 것입니다. 하지만 원하는 경우 이제 추가 단계를 수행할 수 있습니다.