Á, UTF-16, to je ta vyvážená kombinace paměťové úspornosti, endiánové nezávislosti a skvělé kompatibility s ASCII a C, které UTF-16 převzalo z UCS-4/UTF-32, a algoritmické jednoduchosti UTF-8? :o)
V mailing listu IETF jsem zahlédl tenhle postřeh:
"In a local file store, UTF-16 has some questionable advantages. Over the wire, it just decreases significantly the probability of interworking. The IETF and the UNIX operating system community had it just right when they chose to standardize on UTF-8 based interfaces."A to je, prosím, od lidí, co nám schvalují internetové standardy, jako je TCP/IP a podobně. Osobně myslím, že ideální stav je mít v paměti UCS-4 a na disku/na síti UTF-8.
Ovšem i u toho UCS-4 v paměti bych ještě byl s hodnocením opatrný. Člověk s tím sice získá indexaci znaků (no, spíš "znaků", co do praktického významu) řetězce v konstantním čase (kterou s UTF-16 obecně rozhodně nemá), ale pořád ještě tu jsou i v UTF-32 kombinující sekvence, které hatí indexovaný přístup k "logickým" znakům tak jako tak. Jestli se nepletu, spousta precomposed znaků prostě neexistuje, a první komponovaný znak zabije konstantní časový přístup ke komponovanému grafému. Přitom kodér a dekodér UTF-8 je tak triviální, že nestojí skoro žádný strojový čas, rozhodně ne v porovnání s šířkou pásma paměti, disku a sítě. Takže je sporné, co je vlastně rychlejší.
Dnešní doba díky hiearchii pamětí čím dál tím víc favorizuje kompaktní datové struktury, a v praxi je celá řada užitečných operací v UTF-8 pomalejší oproti UTF-32 v závislosti na velikosti reálných dat jen o tu konstantu, pokud není rovnou rychlejší kvůli kompaktnosti, a bůh ví, jak i poměrně normální operace typu délky řetězce ve znacích degenerují i na UTF-16/32. (Co třeba kanonická ekvivalence znaku U+216A a sekvence U+0058 U+0049? Nemusí to být jen diakritika...spousta zdánlivě stejných řetězců snadno může být "různě dlouhá", aplikací tradičního principu "spočítal jsem tu délku špatně, ale zato rychle". :o) U lineárního skenu ale může mít UTF-8 značnou výhodu, pokud je v něm daný text kompaktnější. To sice není zaručené, ale ve značné části světa to nakonec platí. A do přenosů dat na síti se aspoň nemotají ti odporní indiáni, což ocení každý technik. :-)))
:-D - doporučuju přečíst celé. ;-)Office worker: "why does Open Office take so long to load?"
IT guy: "That's because the routines were written by a German guy in his free time. I'm sorry, little-miss-everybody-should-speak-English, but this poor guy was working for free. What do you expect?"
Office worker: "what does the German language have to do with this?"
IT guy: "Your PC was built in Austin, Texas. German is its second language. See this routine here, öffnenSiediegroßeAkte()? Your American PC doesn't know what that means, and has to consult a dictionary each time it sees it. There's a group of teenagers translating it into English. They work on one word each for greater safety. One of them saw two words of the program and spent several weeks in the hospital."