2008-09-18 3 views
2

서로 다른 언어로 된 유니 코드 인코딩의 평균 바이트 당 바이트 수는 얼마나됩니까?다른 언어에 대한 가장 작은 유니 코드 인코딩은 무엇입니까?

예. 만약 내가 가장 작은 숫자의 영문 텍스트를 인코딩하고 싶다면 평균 UTF-8은 문자 당 1 바이트이고 UTF-16은 2이므로 UTF-8을 선택합니다.

한국어 텍스트가 필요하다면 UTF-16은 문자 당 약 2 개이지만 UTF-8은 평균 약 3 개일 수 있습니다 (모르겠다. 여기에 몇 개의 숫자가 나와있다).

어떤 인코딩이 다른 언어 및 문자 집합에 대해 가장 작은 저장소 요구 사항을 산출합니까?

답변

2

주어진 언어의 경우, 대부분의 언어가 인접한 코드 페이지에 할당되므로 문자 당 바이트 수는 비교적 일정합니다. 큰 예외는 강조되지 않은 형식보다 코드 공간에서 더 높게 할당되는 악센트 라틴 문자입니다. 나는 이들을 위해 어려운 번호가 없다.

연속적인 문자 할당을 사용하는 언어의 경우 위키피디아에 table with detailed numbers for various languages이 있습니다. 일반적으로 UTF-8은 작은 문자 세트 (높은 코드 페이지에 할당 된 문자 세트 제외)에 적합하며 UTF-16은 2 바이트 문자 세트에 적합합니다.

밀도가 높은 압축이 필요한 경우 다양한 언어의 데이터 크기를 줄이기 위해 고안된 특수 목적 인코딩을 비교하는 Unicode Technical Note 14을 참조 할 수도 있습니다. 그러나 이러한 기술은 특히 일반적이지 않습니다.

2

UTF8이 가장 적합 어떤 문자 집합 문자는 주로 + 0800 U 아래에있는 곳. 그렇지 않으면 UTF16.

즉, 라틴어, 그리스어, 키릴 어, 히브리어 및 아랍어 등의 UTF8 및 기타 몇 가지가 있습니다. 라틴어 이외의 언어에서는 문자가 UTF16에서와 같은 공간을 차지하지만 바이트를 구두점 및 간격에 저장합니다.

2

문자열/문자 크기가 정말로 걱정된다면 압축하는 방법에 대해 생각해 보셨습니까? 그러면 자동으로 문자열이 '최소'인코딩으로 줄어 듭니다. 그것은 두통의 한 부분입니다. 특히 기억에서 그것을하고 싶다면, 당신에게 아무것도 사지 않을 경우가 많이 있습니다. 그러나 인코딩은, 특히 당신이보기에 너무 단순한 수준의 목적으로 쓰이는 경향이 있습니다 목표로 삼는다.

1

UTF-16에서는 중요한 모든 언어 (즉, 클링 온, 엘프 및 기타 이상한 것)가 2 바이트 문자로 인코딩됩니다.

그래서 문제는 2 바이트 또는 1 바이트 크기의 문자가 될 글리프가있는 언어를 찾는 것입니다. UTF-8에 대한 위키 백과 페이지에서

: http://en.wikipedia.org/wiki/Utf-8

우리는 0x0800 이상의 유니 코드 인덱스 캐릭터가 UTF-8로 긴 적어도 3 바이트 될 것입니다 것을 알 수있다.사용자의 요구 사항을 준수 언어의 http://www.unicode.org/charts/

: 그것을 알고

, 당신은 유니 코드에 코드 차트에서 볼 필요가있다.

:-) 이제

, 사용중인 프레임 워크에 따라 그주의, 선택은 잘 당신이 할 수 없습니다 수 :

윈도우 API에
  • , 유니 코드는 wchar_t를 처리합니다 문자, 나는 (일부 기술 회의 들었다
  • 대부분의 호환 XML 파서과 마찬가지로 UTF-16 Linux에서
  • , 유니 코드, 문자 처리 및 UTF-8
  • 자바는 내부적으로 UTF-16입니다입니다 나는 ~였다 관심 없음) ... 미안하지만 ...) UTF-8은 데이터베이스에 대한 선택의 인코딩이었습니다.

그래서, 당신의 독 ...

:-)

+0

의견을 통해 downvoting 이유를 설명 할 때 용기의 부족과 대조되는 downvoting 대담함에 대해 downvoter를 칭찬하고 싶습니다 ...^_^... – paercebal

+1

어쩌면 그들은 중국어 또는 베트남어를 말할 수 있습니다. 통일 한스 캐릭터의 일부가 비행기 2에 있기 때문에 언어가 중요하지 않다고 화를 냈습니다. 아마도 그들은 클링 온 (Klingon)을 말하고 화 내고 말았습니다. 어디에서나 유니 코드로) 표준 이었지만 라틴어는 Klingon의 표준 스크립트입니다. ;) –

1
나는 정확한 수치를 모르는

하지만 일본어은 Shift_JIS 평균에 적은 UTF-8 이상의 문자 당 바이트 등을 데리러 EUC-JP는 일본어 텍스트에 최적화되어 있으므로 그러나 유니 코드와 동일한 코드 포인트 공간을 다루지 않으므로 질문에 대한 정답이 아닐 수 있습니다.

일본어 문자의 경우 UTF-16보다 낫습니다 (3 바이트가 아닌 문자 당 2 바이트). 7 비트 문자가 많으면 UTF-8보다 좋지 않습니다. 문맥에 따라 다르지만 기술 텍스트는 1 바이트 범위에서 많은 문자를 포함 할 가능성이 더 큽니다. 고전적인 일본어 텍스트는 없을 수 있습니다.

전송시 데이터를 압축 (gzip, bz2) 할 수 있으면 인코딩이 중요하지 않음에 유의하십시오. 유니 코드의 알파벳에 대한 코드 포인트는 서로 가깝기 때문에 압축 된 데이터에서 매우 짧은 표현으로 일반적인 접두어를 사용해야합니다.

UTF-8은 일반적으로 UTF-32 또는 UTF-16보다 압축되어 있고 ASCII * 또는 ISO-8859-1 NUL- 종료 된 문자열. 비록 인덱스에 의한 문자에 대한 랜덤 액세스가 필요하다면 쓸모가 없습니다.

BMP가 아닌 문자를 신경 쓰지 않는다면 UCS-2는 문자 당 2 바이트이므로 임의 액세스가 가능합니다. 하지만 그것은 '유니 코드'가 의미하는 바에 달려 있습니다.