unicode 이란 변환 - 유니 코드, UTF-8, UTF-16은 무엇입니까?





4 Answers

  • 유니 코드
    • 전 세계에서 사용되는 문자 집합입니다.
  • UTF-8
    • 가능한 모든 문자 (코드 포인트라고 함)를 유니 코드로 인코딩 할 수있는 문자 인코딩.
    • 코드 단위는 8 비트입니다.
    • 1 ~ 4 개의 코드 단위를 사용하여 유니 코드를 인코딩
    • " $ "(하나의 8 비트)에 대한 00100100 ; 11000010 10100010 " ¢ "(두 개의 8 비트); 11100010 10000010 10101100 , " "(3 개의 8 비트)
  • UTF-16
    • 다른 문자 인코딩
    • 코드 단위는 16 비트입니다.
    • 유니 코드를 인코딩하기 위해 하나 또는 두 개의 코드 단위를 사용하십시오.
    • " $ "(하나의 16 비트)에 대해 00000000 00100100 ; 11011000 01010010 11011111 01100010 " 𤭢 "(두 개의 16 비트)
프로그램 >- 문자코드

유니 코드의 기초는 무엇이며 UTF-8 또는 UTF-16의 필요성은 무엇입니까? 나는 이것을 Google에서 연구했고 여기에서도 검색했지만 나에게 명확하지 않다.

VSS에서 파일 비교를 수행 할 때 두 파일의 UTF가 다르다는 메시지가 표시되는 경우가 있습니다. 왜 이것이 사실입니까?

간단히 설명하십시오.




원래 유니 코드는 고정 너비의 16 비트 인코딩 (UCS-2)을 사용했습니다. Java 및 Windows NT와 같은 초기 유니 코드 채택 자들은 16 비트 문자열 주위에 라이브러리를 만들었습니다.

나중에 유니 코드의 범위가 확장되어 16 비트 인코딩이 지원할 65,536 개 이상의 코드 포인트가 필요한 역사적인 문자가 포함되었습니다. UCS-2를 사용하는 플랫폼에서 추가 문자를 나타낼 수 있도록 UTF-16 인코딩이 도입되었습니다. 보충 비행기의 문자를 나타 내기 위해 "서로 게이트 쌍"을 사용합니다.

한편, 많은 오래된 소프트웨어 및 네트워크 프로토콜은 8 비트 문자열을 사용하고있었습니다. UTF-8은 이러한 시스템이 넓은 문자를 사용하지 않고도 유니 코드를 지원할 수 있도록 만들어졌습니다. 7 비트 ASCII와 역 호환됩니다.




왜 유니 코드인가? ASCII는 127자를 가지고 있기 때문에. 128 개에서 255 개까지 국가마다 다르므로 코드 페이지가 있습니다. 그래서 그들은 1114111 자까지 가질 수 있다고 말했다. 그렇다면 최고의 코드 포인트를 어떻게 저장합니까? 21 비트를 사용하여 저장해야하므로 32 비트와 11 비트 낭비가있는 DWORD를 사용하게됩니다. 따라서 DWORD를 사용하여 유니 코드 문자를 저장하면 DWORD 값이 코드 포인트와 정확하게 일치하므로 가장 쉬운 방법입니다. 그러나 DWORD 배열은 물론 WORD 배열보다 크며 물론 BYTE 배열보다 큽니다. 그래서 utf-32뿐만 아니라 utf-16도 있습니다. 하지만 utf-16은 WORD 스트림을 의미하고 WORD는 16 비트이므로 최고 코드 포인트 1114111은 어떻게 Word에 들어갈 수 있습니까? 그럴 순 없어! 따라서 그들은 65535 개 이상의 모든 것을 대리어라고 부르는 DWORD에 넣습니다. 이러한 서로 게이트 쌍은 두 단어로 처음 6 비트를 보면 감지 할 수 있습니다. 그럼 utf-8은 어때? 바이트 배열 또는 바이트 스트림이지만 가장 높은 코드 포인트 1114111이 바이트에 어떻게 맞을 수 있습니까? 그럴 순 없어! 좋아요, 그래서 그들은 DWORD를 올바르게 넣었습니까? 아니면 아마도 단어일까요? 거의 맞아! 그들은 utf-8 시퀀스를 발명했는데, 이는 127보다 높은 모든 코드 포인트가 2 바이트, 3 바이트 또는 4 바이트 시퀀스로 인코딩되어야한다는 것을 의미합니다. 와우! 그러나 어떻게 그러한 서열을 검출 할 수 있습니까? 음, 127까지의 모든 것은 ASCII이며 1 바이트입니다. 110으로 시작하는 것은 2 바이트 시퀀스입니다. 1110으로 시작하는 것은 3 바이트 시퀀스이고, 11110으로 시작하는 것은 4 바이트 시퀀스입니다. 이러한 소위 "시작 바이트"의 나머지 비트는 코드 포인트에 속합니다. 이제 순서에 따라 다음의 바이트를 따라야합니다. 다음 바이트는 10으로 시작하고, 나머지 비트는 페이로드 비트의 6 비트이며 코드 포인트에 속합니다. 시작 바이트와 다음 바이트의 페이로드 비트를 연결하면 코드 포인트가 생깁니다. 그것은 utf-8의 모든 마술입니다.




UTF는 유니 코드 변환 형식 (Unicode Transformation Format)의 약자입니다. 근본적으로 오늘날의 세계에서는 수백 가지 언어로 작성된 스크립트가 있으며 이전에 사용 된 기본 ASCII에 포함되지 않은 형식이 있습니다. 따라서 UTF가 생겨났습니다.

UTF-8에는 문자 인코딩 기능이 있으며 코드 단위는 8 비트이지만 UTF-16의 경우에는 16 비트입니다.






Related