Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia Tuesday TopDrive KupDnes Navrcholu Bomba NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názor ke zprávičce Změna plánu ve vývoji PHP 6

Miloslav Ponkrác aura:58
16. 3. 2010 12:24

Re: Tak to je jasné

celé vlákno

„Co znamená „V UTF-8 je možnost vytvoření neplatných sekvencí?“ Nic takového UTF-8 „neumožňuje“. To, že záměrně poškodím data vložením neplatných binárních znaků, není něco, co by mi formát „umožňoval““

K poškození dat nedochází zásadně záměrně.

“UTF-8 naopak umožňuje se z takové chyby hned u následujícího znaku zotavit. Tedy nic se nerozesere, ba právě naopak!“

To sice umožňuje, nicméně není definován code point, ani způsob jak naložit s vadným kusem sekvence. Jediné, co UTF-8 definuje je poznat, který bajt je začátkem copdepoint a kolik by mělo následovat bajtů. Pokud nenásleduje, pak zotavení je dle libosti toho kdo to programuje. Tedy NENÍ JEDNOZNAČNÉ.

„pod čarou: z prvního komentáře se zdálo, že jste netušíte, že UTF-16 adresuje plný Unicode prostor, viz zmínky o problémech s japonštinou nebo nedostatkem znaků. Skutečně tomu tak bylo nebo jste se jen nešťastně vyjádřil?“

UTF-16 adresuje plný 21bitový prostor, což je normativně stanovený limit pro ISO. Kdysi ovšem ISO stanovilo vícebitový prostor (například UTF-8 je, přesněji bylo definováno pro plných 32 bitů, ve skutečnosti zvládne mapovat bitů ještě více). Původně ovšem omezení na 21bitový prostor nebylo, a to z toho důvodu, že omezení na 21bitů bylo nutné zavést z důvodu UTF-16, které namapuje jen omezenou množinu znaků.

Následkem toho bylo zavedeno (ale později, ne ze začátku) omezení na 21bitů z důvodů nedostatečné schopnosti mapovat dostatečný počet znaků v UTF-16. Tedy ano, dnes UTF-16 mapuje celou množinu Unicode, ovšem proto, že Unicode byla oříznuta na omezené schopnosti UTF-16.