no, ono to je tak normální.
I dneska je všude kodovací babylon - obzvlášť když se jedná o web či databáze. navíc když se někdo pokouší natvrdo transformovat data do ISO 8859-1 ... zakázat veškeré jiné kodování než utf-8. nevim k čemu je dobré v dnešním světě škudlit na jednotlivých bajtech... když se ke všemu přicpe miliarda různých metadat a metadat k metadatům a tak dál...
Proč "škudlit na jednotlivých bajtech": Protože s UTF-8 a UTF-16 je práce podstatně pomalejší (kvůli tomu, že má každý znak jinou délku, nemluvě o tom, že je potřeba uvažovat o odlišných byte-orderech) a UTF-32 zase svým zečtyřnásobením délky většiny běžných souborů plýtvá kapacitou až příliš.
Práce s UTF8 nemusí být citelně pomalejší. Pro řadu úloh je rozdíl minimální, pro některé je nutné upravit některé algoritmy. UTF8 má jinak dost výhod, minimálně v tom, že ty nejdůležitější ASCI znaky jsou jedno bajtové a tudíž se ušetří čas v jiných operacích - např. při parsování textových souborů nemusíte řešit dvou a více bajtové znaky - většinou vás zajímají základní ASCII znaky a ty jsou jednobajtové, tudíž nedochází k žádnému výraznému zpomalení.
Pokud budeme řešit efektivitu jednotlivých kódování, tak se asi budeme bavit o hromadném zpracování dat - o databázích. Je otázkou jak to bude v budoucnu, nicméně aktuálně u db není procesor úzkým hrdlem. Problém je pomalé čtení dat z disku a málo paměti. Tudíž UTF8 je minimálně pro střední a západní Evropu nejvýhodnější. Latin2 by bylo výhodnější, ale to přeci jen nedostatečně pokrývá požadavky.
Neměly by, otestování surrogate pair je poměrně jednoduché a rozbití kompatibility, pokud to neděláte, značné. Přesně kvůli takovým programátorům bylo tolik problémů s používáním horní paměti, s rokem 2000 a se zavedením UTF-8.
Mezi ty „speciální exotické znaky“ patří například noty (
UTF-8 je kódování na výměnu dat. Má jenom jednu endianitu (velkou), má automatickou synchronizaci (takže nevadí, když skočíte doprostřed znaku) a je celkem úsporné na místo. Převod mezi UTF-8 a UTF-32 je triviální a velmi rychlý (ne tak mezi UTF-8 a UTF-16).
UTF-16 je nesmyslné kódování, které s námi bohužel ještě dlouho pobude kvůli Windows a ICU/Java (tentokrát za to ale nemůže MS ani IBM, ale Unicode Consortium, když v Unicode 1.0 prohlásilo, že 16 bitů bude stačit — historie se opakuje :).
UTF-32 je ideální kódování na práci s daty v paměti. Na ukládání do souborů se moc nehodí kvůli plýtváním a endianitě.