2009-05-13 2 views

답변

6

UTF-8은 모든 ASCII 문서에서 작동하며 일반적으로 UTF-16보다 압축되어 있지만 여전히 유니 코드 전체를 포함합니다. 나는 UTF-8이 인데,은 UTF-16보다 더 흔하다고 말한다. BOM이없고 명시 적 인코딩이 지정되지 않은 경우 XML의 기본값이기도합니다.

왜 UTF-16으로 기본 설정하는 것이 더 좋을 것이라고 생각하십니까? (그게 Encoding.Unicode입니다.)

EDIT : 정확히 UTF-8이 처리 할 수있는 것에 대해 혼란 스럽습니다. This page은 특정 유니 코드 문자가 인코딩 된 방법을 포함하여 매우 명확하게 설명합니다. 가변 폭 인코딩이지만 유니 코드 전체를 다룹니다.

+0

.NET은 기본적으로 문자열에 UTF16을 사용하기 때문에 UTF8에서 처리 할 수없는 문자를 출력하려고하는 시나리오 (아마도 다른 문화권에서)가 될 것입니다. – Quibblesome

+1

UTF-8이 모든 유니 코드 문자를 처리합니다. –

+1

@Quarrel UTF-8은 가변 길이 문자 인코딩이며 유니 코드 표준에서 _any_ 문자를 나타낼 수 있습니다. 더 많은 옥텟 (8 비트 바이트)을 사용하며 최대 4 개까지 사용할 수 있습니다. –

6

UTF8 유니 코드, 특히 유니 코드 인코딩 유형 중 하나입니다.

더 중요한 것은 ASCII와의 하위 호환성 플러스는 XML 및 HTML

2

"유니 코드"에 대한 표준 기본이다 표준의 이름, 그래서 이러한 인코딩은 "유니 코드"로 없다. 오히려 두 가지 매핑 방법이 있습니다 : UTFUCS.

"이유"부분은 UTF-8이 ASCII와 최대 호환성을 갖습니다.

+1

.NET Framework에서 UTF-16 인코딩은 유니 코드라고합니다. (Encoding.Unicode 속성.) 혼란에 도움이되지 않습니다. ;) – Guffa

2

다른 모든 것들은 이미 말했듯이, UTF-8은 유니 코드 내의 인코딩 표준입니다. UTF-8은 다양한 유니 코드 문자를 인코딩하기 위해 가변 바이트 수를 사용합니다.

모든 ASCII 문자는 그대로 표현되므로 ASCII 파일을 읽을 수 있습니다. 스트림의 바이트가 8 번째 비트 (최상위 비트> 127)를 설정하자마자 판독기가 다음 바이트와 결합하여 < 128이 될 때까지이 조합을 트리거합니다. 조합은 1 문자로 간주됩니다.

LATIN-1 (ANSI)에는 2자를 사용하여 인코딩 된 문자가 있습니다. 예를 들어, é는 e 및 '로 인코딩됩니다. 따라서 길이 ('é')는 2입니다.

Windows는 인코딩 가능한 문자를 64K로 제한하는 UTF-16을 사용합니다. 이는 모든 Unicde 문자를 의미하지는 않습니다. 당분간 UTF-32는 모든 문자를 허용하지만 인위적으로도 제한됩니다. 그리고 모두는이 앞의 0으로, ASCII 상향 호환되지 않습니다 :

A = ASCII h41 = UTF-8 h41 = UTF-16 h0041 = UTF-32 h00000041 

도 조금 큰 엔디안 인코딩이 있습니다

A = UTF-16 big endian h0041 = UTF-16 little endian h4100 

하여 파일을 저장 UTF16 또는 UTF32을 사용하여 상상해보십시오. ASCII 및 UTF-8 (ASCII 문자 만 사용하는 경우 UTF-8)과 비교하여 (텍스트 파일의 경우) 크기가 두 배 또는 네 배로됩니다. UTF-8은 향후 확장을 위해 유니 코드 표준의 모든 문자를 허용 할뿐만 아니라 효율적으로 공간을 절약합니다.

일반적으로 파일의 처음 2 바이트 인 BOM 또는 바이트 순서 표시기는 어떤 인코딩 표준이 사용되는지 알려줍니다. 누락 된 경우 XML 및 StreamRedaer는 UTF-8을 사용합니다. 이것은 ASCII 파일에 BOM이 없으므로 대부분의 경우 올바르게 읽히므로 다시 나타납니다.이것은 모든 LATIN-1을 사용하는 파일에는 적용되지 않을 수 있습니다.

관련 문제