[unicode] 유니 코드, UTF-8, UTF-16은 무엇입니까?


3 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 비트)
Question

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

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

간단히 설명하십시오.




이 기사는 http://kunststube.net/encoding/ 모든 세부 사항을 설명합니다.

버퍼에 쓰기

UTF8 인코딩을 사용하여 4 바이트 버퍼 인 글자를 쓰면 바이너리는 다음과 같이 보입니다.

00000000 11100011 10000001 10000010

UTF16 인코딩으로 4 바이트 버퍼 인 글자를 쓰면 바이너리는 다음과 같이 보입니다.

00000000 00000000 00110000 01000010

보시다시피 콘텐츠에 사용하는 언어에 따라 적절하게 메모리에 영향을 미칩니다.

예 :이 특정 문자의 경우 : 다음 기호에 사용할 예비 바이트가 2 개 있기 때문에 A UTF16 인코딩이 더 효율적입니다. 그러나 일본 알파벳에 UTF16을 사용해야한다는 것을 의미하지는 않습니다.

버퍼에서 읽기

이제 위의 바이트를 읽고 싶다면, 어떤 인코딩으로 쓰여졌는지 알아야하고 올바르게 다시 디코딩해야합니다.

예 : 00000000 11100011 10000001 10000010 을 UTF16 인코딩으로 디코딩하면 결국

참고 : 인코딩과 유니 코드는 두 가지 다른 점이 있습니다. 유니 코드는 각 심볼이 고유 한 코드 포인트에 매핑 된 큰 (table) 입니다. 예 : 문자는 (코드 포인트) : 30 42 (16 진수)입니다. 한편, 인코딩은 하드웨어에 저장할 때 심볼을보다 적절한 방법으로 변환하는 알고리즘입니다.

30 42 (hex) - > UTF8 encoding - > E3 81 82 (hex), which is above result in binary.

30 42 (hex) - > UTF16 encoding - > 30 42 (hex), which is above result in binary.




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

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

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




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

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




Related