유니 코드, 유니 코드 빅 엔디안 또는 UTF-8? 그 차이점은 무엇입니까? 어떤 형식이 더 좋습니까?


19

저장하려고하면 텍스트 파일 메모장에 영어가 아닌 텍스트가 있으면 선택할 수있는 옵션이 있습니다. 유니 코드 , 유니 코드 빅 엔디안 UTF-8 . 이러한 형식의 차이점은 무엇입니까?

내가한다고 가정 할 때 아니 이전 버전과의 호환성 (이전 OS 버전 또는 앱)을 원합니다. 아니 파일 크기에주의를 기울여보십시오.이 형식 중 어느 것이 더 낫습니다.

(텍스트는 다른 언어 외에도 중국어 또는 일본어와 같은 언어로되어 있다고 가정합니다.)

노트 : 아래의 대답과 주석에서 메모장 용어에서 유니 코드는 UTF-16 (Little Endian)이고 유니 코드 Big Endian은 UTF-16 (Big Endian)이며 UTF-8은 UTF-8입니다.


답변:


19

던노. 톱이나 망치가 더 낫다. :-)

유니 코드는 UTF가 아닙니다.

이 기사에는 주제가 조금 더 적절합니다.

  • UTF-8은 ASCII 세트의 문자 표시를위한 바이트 크기를 최소화하는 데 중점을 둡니다 (가변 길이 표현 : 각 문자는 1 - 4 바이트로 표시되고 ASCII 문자는 모두 1 바이트에 맞음). Joel이 말한 것처럼 :

미국인 이었기 때문에 U + 00FF를 넘는 코드 포인트를 거의 사용하지 않는 영어 텍스트를보고 있었기 때문에 그들은 "0을 모두보십시오!"라고 대답했습니다. 또한 그들은 보존하려는 (냉담한) 자유 주의적 히피족이었다. 그들이 텍사스 인이라면 바이트 수를 두 번 줄이거 나 생각하지 않았을 것입니다. 그러나 캘리포니아 주민들은 현을 위해 취한 저장 공간을 두 배로 늘릴 생각을하지 못했습니다.

  • UTF-32는 모든 문자에 4 바이트를 사용하여 완전성과 고정 길이 표현에 중점을 둡니다. Unicode 코드 포인트를 직접 4 바이트로 매핑하는 가장 직접적인 변환입니다. 분명히 크기면에서 효율적이지 않습니다.

  • UTF-16은 대부분 2 바이트를 사용하지만 문자 당 2 * 2 바이트로 확장되어 BMP (Basic Multilingual Plane)에 포함되지 않은 문자를 나타냅니다.

또한 보아라. 모든 소프트웨어 개발자 절대 최소, 절대적으로 유니 코드와 문자 집합에 대해 알아야 함 (변명의 여지가 없음)


4
문제는 유니 코드가 '인코딩'이지만 바이트 - 수 의미는 아닙니다. UTF-8 / 16 / 32는 모두 유니 코드 인코딩이지만 유니 코드 자체는 심볼에서 숫자로의 매핑입니다. 그들은 내가 생각하는 혼란을 피하기 위해보다 독특한 용어를 사용할 수있었습니다.
jerryjvl

4
어쨌든, 질문의 OP에, 확률은 응용 프로그램이 '유니 코드 (Unicode)'라고하는 곳에 'UTF-16'을 의미한다는 것입니다.
jerryjvl

3
나는 UTF-8의 목표가 ASCII와의 하위 호환성과는 반대로 "보존"이라고 확신하지 못한다.
Mr. Shiny and New 安宇

@ 요한네스 : 유니 코드 컨소시엄은 UTF-16으로 표현할 수 없기 때문에 코드 포인트를 U + 10FFFF 이상으로 지정하지 않기로 결정했습니다. 이것은 UTF-8을 4 바이트로 제한하는 효과가있었습니다.
user46971

1
"유니 코드는 UTF가 아닙니다"- 많은 경우 WTF입니다.)
mlvljr

4

유럽 ​​언어의 경우 UTF-8이 더 작습니다. 동양 언어의 경우 그 차이가 그렇게 명확하지 않습니다.

둘 다 가능한 모든 유니 코드 문자를 처리하므로 호환성에 차이가 없어야합니다.


3

생각보다 많은 유니 코드 문자 인코딩이 있습니다.

  • UTF 8

    UTF-8 인코딩은 1-4 바이트 범위의 가변 폭이며 각 바이트의 상위 비트는 제어 비트로 예약됩니다. 첫 번째 바이트의 첫 번째 비트는 해당 문자에 사용 된 총 바이트 수를 나타냅니다. 문자의 코드 포인트의 스칼라 값은 비 제어 비트의 연결입니다. 이 테이블에서, x 유니 코드 값의 하위 8 비트를 나타내며, y 다음 상위 8 비트를 나타냅니다. z 그것보다 높은 비트를 나타냅니다.

    Unicode              Byte1     Byte2     Byte3     Byte4
    U+0000-U+007F       0xxxxxxx            
    U+0080-U+07FF       110yyyxx  10xxxxxx          
    U+0800-U+FFFF       1110yyyy  10yyyyxx  10xxxxxx    
    U+10000-U+10FFFF    11110zzz  10zzyyyy  10yyyyxx  10xxxxxx
    
  • UCS-16
  • UCS-16BE
  • UCS-16LE

  • UTF-16
  • UTF-16BE
  • UTF-16LE

  • UTF-32
  • UTF-32-BE

1
나열된 것보다 많은 유니 코드 문자 인코딩이 있습니다. 예를 들어 UTF-1 , UTF-7 , UTF-EBCDIC , GB-18030 , 몸짓 광대극 , UTF-9 및 UTF-18 ... 이진 인코딩 스키마를 사용하여 유니 코드 데이터를 인코딩 할 수도 있습니다. 더 많은 것을 읽으십시오 유니 코드 인코딩 비교
phuclv

1

"유니 코드"는 유니 코드 문자 집합을 문자 당 16 비트로 인코딩하는 "UTF-16"의 또 다른 용어입니다. UTF-8은 문자 당 8 비트로 인코딩합니다.

두 경우 모두 오버 플로우가 다른 16 비트 또는 8 비트에 할당됩니다.


어느 것이 더 낫습니까?
R. Martinho Fernandes

상황에 따라 다르다.
John Saunders

이 특정 질문에 대해서는 "유니 코드"가 실제로 "UTF-16"의 다른 용어로 사용되지 않는 것으로 보입니다. 일반적으로 그렇지 않습니다. 제이슨의 대답을 참조하십시오.
Arjan

1
"문자 당"이 아니라 "코드 단위당"을 의미합니다. UTF-8 및 UTF-16은 문자를 나타 내기 위해 여러 코드 단위를 사용할 수 있습니다. "유니 코드"와 "UTF-16"은 Microsoft 용어를 제외하고는 똑같지 않습니다.
user46971

1

텍스트 파일과 같은 작은 파일의 유일한 장점은 결과 파일 크기입니다. UTF-8은 일반적으로 더 작은 파일을 생성합니다. 그러나이 차이는 중국어 / 일본어 텍스트에서 덜 두드러 질 수 있습니다.


네트워크 대역폭과 메모리 사용량에도 차이가 있음을 명심하십시오.
Jason Baker

1
"UTF-8은 일반적으로 더 작은 파일을 생성합니다": 일반적으로 아닙니다. UTF-8은 ASCII 파일 용으로 더 작은 파일을 생성합니다. 파일이 U + 0800 이상의 유니 코드 코드 포인트로만 구성된 경우 더 큰 UTF-8보다 UTF-16에서보다.
sleske

0

한마디로 유니 코드는 문자 집합 , Unicode Big Endian 및 utf-8은 두 가지입니다. 인코딩 컴퓨터에 문자를 01로 저장하는 데 사용됩니다.


그 차이는 ...?
David Richerby
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.