우수 답변
다른 답변은 정답이 아닙니다.
유니 코드 는 사실이며 거의 모든 세계 스크립트의 문자 목록을 포함합니다. 그러나 이것은 유니 코드 표준의 한 부분 인 범용 코드 문자 집합 에 불과합니다. 유니 코드 표준에는 또한 이러한 유니 코드 문자의 렌더링, 순서 지정, 정규화 및 인코딩 규칙이 포함되어 있습니다.
UTF-8 은 다음 중 하나입니다. 유니 코드를 컴퓨터 텍스트로 표현하는 데 사용되는 세 가지 표준 문자 인코딩 (다른 것은 UTF-16 및 UTF-32). 역사적으로 텍스트 파일은 일반적으로 각 바이트가 한 문자를 나타내는 바이트 시퀀스로 인코딩되었습니다. 그러나 바이트는 256 개의 값 중 하나만 사용할 수 있으므로 유니 코드에서는 불가능합니다. 가장 간단한 유니 코드 인코딩은 UTF-32 이며 문자 당 4 바이트 (또는 32 비트)를 사용합니다. 그러나 이것은 스토리지, 메모리 및 처리 사용에있어서 비효율적입니다. 1996 년까지 모든 유니 코드 문자를 표현하는 데 2 바이트면 충분하다고 생각 (또는 희망)했지만 사람들은 한자가 얼마나 많은지 깨달았습니다. 결과적으로 JavaScript와 같은 일부 언어는 여전히 2 바이트 ( UCS-2 )를 사용하여 문자를 나타내므로 \ unicode {x1F60E와 같은 문자를 처리 할 때 문제가 발생할 수 있습니다. }. 이 문제를 해결하기 위해 UCS-2는 UTF-16 으로 대체되었습니다. 여기서 일부 문자는 2 개 1이 아닌 2 바이트 코드 단위. 이렇게하면 문자열 조작이 더 복잡해 지지만 (예 : 문자열 길이 계산) UTF-32보다 적은 공간을 사용합니다.
UTF-8 는 UTF-16과 비슷하지만 코드 단위는 모두 1 바이트 (8 비트)이고 문자는 1 ~ 4 개의 코드 단위로 표시됩니다. 일반 텍스트 (예 : ASCII) 문자는 모두 일반 비 유니 코드 문자열과 동일한 방식으로 단일 바이트로 표시됩니다. 이것은 레거시 ASCII 텍스트도 유효한 UTF-8이라는 큰 장점이 있습니다. 또한 ASCII를 나타내는 바이트는 다른 문자의 표현에 사용되지 않으므로 해당 문자를 검색하는 레거시 프로그램을 업데이트 할 필요가 없습니다. 이러한 장점은 일반적으로 UTF-8이 가장 공간 효율적인 방법이라는 사실과 결합됩니다. 유니 코드 텍스트 (특히 서구 텍스트)를 저장한다는 것은 오늘날 대부분의 웹 페이지가 UTF-8로 인코딩된다는 것을 의미합니다.
답변
텍스트 처리 프로그램은 무언가를 출력해야합니다. (그리고 파일에 저장) 프로그램이 상호 운용되도록하려면 텍스트 처리 프로그램이 프린터 및 스캐너 드라이버와 통신하도록하려면 통신 방법을 설명해야합니다. 그리고이를 효율적으로 수행하고 싶습니다. 표준은 상호 통신을 가능하게합니다. 그렇지 않으면 Microsoft Word 스마트 따옴표가 Canon 프린터 및 HP 스캐너에서 작동하지 않습니다. 원하는 것이 아닙니다….
Edit added : 유니 코드가 의미론 (구문이 아닌)과 어떻게 관련되는지에 대한 Comet의 답변보기 /대표). 이것은 상호 운용성에 대한 내 요점으로 이동합니다. 문자 시퀀스가 ”의미있는”것이기를 원합니다. 그래서 어떤 것들은 유니 코드로 표현되고 다른 것들은 그렇지 않습니다. 라틴 알파벳 사용자, 키릴 자모 사용자, 그리스 자모 사용자 및 투르크 자모 사용자는 모두 “a”처럼 보이는 문자를 가지고 있지만 (일부 글꼴에서는 구분할 수 있고 다른 글꼴에서는 구분할 수 없지만) 해당 언어의 작성자는이를 고려합니다. 다른 문자 (의미 적 차이가 있음). 따라서 유니 코드는 서로 다른 코드 포인트로 간주합니다. 그것들은 다른 의미를 나타내고, 다르게 정렬하는 등의 등을 나타냅니다. 왼쪽과 오른쪽 따옴표, 특정 악센트 문자도 마찬가지입니다. 일부 언어에서는 의미가 다릅니다. 의미론을 올바르게 표현하면 특정 종류의 상호 운용성을 얻을 수 있습니다.
물건을 그림으로 올바르게 표현하면 다른 종류를 얻게됩니다. 그러나 유니 코드는 두 번째가 아닌 첫 번째를 위해 노력하고 있습니다.
유니 코드가 동형 문자를 단일 문자로 표현하면 사용중인 글꼴에 문제가 생기고 의미 적 정확성이 파괴됩니다. 검은 색 문자로 된 라틴 문자 a는 로마 문자의 헬 베틱 문자와 매우 다릅니다. 기울임 꼴과 기울임 꼴은 항상 같지는 않지만 때때로 그렇습니다.
불가리아에서 표지판을 읽을 때 대부분 키릴 문자에 라틴어 필사본과 매우 다른 글꼴을 사용하는 경우가 있으므로 문자 “a”와 같은 경우에도 문자가 다른 것이 분명합니다. 하지만 때로는 그렇지 않고 번호판에서 Bm을 볼 때 영어로 Vt로 표기하는지 아니면 단순히 라틴어 Bm인지 구별해야하며 어떤 문자 집합을 알기 위해 읽어야하는 전체 단어가 있습니다 사용하고 있습니다.
시맨틱 정확성을 얻는 것조차 어렵습니다. 독일어 sharp-s는 소문자로만 존재하고 모든 “대문자”로 단어를 인쇄하면 두 개의 S 문자를 사용하지만 소문자로 된 단어는 두 개의 “소문자”s 문자를 사용하는 단어와 샤프를 사용하는 단어가 있습니다. s.
따라서 거의 모든 표준과 마찬가지로 유니 코드는 절충안입니다. 단어가 올바르게 표현되고이를 사용하여 전달 될 수 있도록 올바른 답을 얻으려고합니다. “그래픽 적으로”정확하지 않기 때문에 유니 코드 시퀀스는 인쇄 된 표현을 규정 된 모든 세부 사항과 함께 모호하지 않게 설명합니다. 이를 위해서는 유니 코드 이상의 것이 필요합니다.
그 경로를 따라 가면 지정한 설명을 출력 (또는 입력) 할 수없는 장치에 문제가 생깁니다. 200dpi 프린터는 그렇게 많은 작업을 수행 할 수 있으며 1200dpi 프린터가 표현할 수있는 미묘한 차이는 200dpi에서 손실됩니다. 문제는 당신이 신경 쓰는지 여부가됩니다. 때로는 그렇게하지만 그렇지 않은 경우도 있습니다.
유니 코드는 올바른 의미 체계를 원하지 않고 단순히 원하는 많은 경우에 유용합니다. 단어를 모호하지 않게 전송하고 어떤 유니 코드 코드 포인트가 사용되는지 알고 싶을 때 단어의 철자가 자연어로 어떻게 쓰이는지 알 수 있습니다. 동형 문자가 있으면 모호 할 수 있지만 필수는 아닙니다. 유니 코드에서 모호하지 않을 수 있습니다. 인쇄 방법
에 대한 모든 세부 정보를 나타낼 수는 없습니다.