2012-04-13 10 views
18

Możliwe zduplikowane:
Why UTF-32 exists whereas only 21 bits are necessary to encode every character?Dlaczego nie ma UTF-24?

Maksymalna punkt kodowy Unicode 0x10FFFF UTF-32. UTF-32 ma 21 bitów informacyjnych i 11 zbędnych bitów zerowych. Dlaczego więc nie ma kodowania UTF-24 (tj. Usunięto kodowanie UTF-32 z wysokim bajtem) do przechowywania każdego punktu kodowania w 3 bajtach zamiast 4?

+0

Powód jest prosty, ponieważ nie ma 24 strukturę. Jest 16, 32, 8, 2, więc 24 byłoby dziwne. Plus bloki pamięci są zwykle dzielone w blokach 2^x .... Z tego samego powodu komputer nie pochodzi z 24 MB lub dyski twarde nie są reklamowane z 24 GB zamiast 16 GB i 32 GB. –

Odpowiedz

19

Cóż, prawda jest taka: UTF-24 został zaproponowany w 2007 roku:

http://unicode.org/mail-arch/unicode-ml/y2007-m01/0057.html

Wspomniany Plusy & minusy bycia:

"UTF-24 
Advantages: 
1. Fixed length code units. 
2. Encoding format is easily detectable for any content, even if mislabeled. 
3. Byte order can be reliably detected without the use of BOM, even for single-code-unit data. 
4. If octets are dropped/inserted, decoder can resync at next valid code unit. 
5. Practical for both internal processing and storage/interchange. 
6. Conversion to code point scalar values is more trivial then for UTF-16 surrogate pairs 
    and UTF-7/8 multibyte sequences. 
7. 7-bit transparent version can be easily derived. 
8. Most compact for texts in archaic scripts. 
Disadvantages: 
1. Takes more space then UTF-8/16, except for texts in archaic scripts. 
2. Comparing to UTF-32, extra bitwise operations required to convert to code point scalar values. 
3. Incompatible with many legacy text-processing tools and protocols. " 

Jak zauważył Dawida Starner w http://www.mail-archive.com/[email protected]/msg16011.html:

Dlaczego? UTF-24 będzie prawie zawsze większy niż UTF-16, chyba że masz mówią o dokumencie w Old Italic lub Gothic. Alfanumeryczne alfanumeryczne znaki będą prawie zawsze łączone z wystarczającą ilością ASCII, aby wygrać w postaci UTF-8, a jeśli nie, wystarczającą liczbę znaków BMP, aby UTF-16 wygrał. Współczesne komputery nie radzą sobie dobrze z 24-bitowymi porcjami; w pamięci musieliby pobrać 32 bity na sztukę, chyba że zadeklarowaliście, że są spakowani, a następnie będą wolniej niż UTF-16 lub UTF-32. A jeśli przechowujesz na dysku , równie dobrze możesz użyć BOCU lub SCSU (już nie będziesz mieć standardu ), lub użyć standardowej kompresji z UTS-8, UTF-16, BOCU lub SCSU. SCSU lub BOCU skompresowane powinny zajmować połowę wolnego miejsca w UTF-24, .

Można również sprawdzić następujące StackOverflow wpis:

Why UTF-32 exists whereas only 21 bits are necessary to encode every character?

+2

Drugi cytat powstał kilka lat wcześniej, od 2003 r., W odpowiedzi na moją propozycję. –

+0

Osobiście chciałbym zobaczyć, jak się rozwijają. Wiem, że jest jeszcze mnóstwo wolnego miejsca, ale nie zrobili jeszcze żadnego języka, szczególnie w językach historycznych. – Rahly