Nam sice ASCII nestaci, ale uz jsem videl, jak lidi prasi se znakovymi pary, resp. vubec je neresi (a mozna ani nevi, ze to maji resit).
Co si mám představit pod pojmem "znakové páry"? Ligatury?
Toto: http://www.unicode.org/glossary/#surrogate_pair
Jde o to, ze Java (tedy zakladni jazyk nad JVM) pouziva UTF-16, tj. nektere znaky jsou tvoreny dvema po sobe jdoucimi "chary" ve Stringu, protoze "char" ma 16bitu, kdezto nektere jazyky potrebuji az 21 bitu na znak. Vetsinou to automagicky funguje samo od sebe (coz je jadro problemu - kasle se na to), ale uz jsem videl kod, kde se proste spocita pocet "charu" ve Stringu a prohlasi se to za pocet znaku nebo naopak (vidis jak to mate: char nekdy neni znak).
Kde to dela problemy? Vsude tam, kde specka rika neco ve stylu "jmeno bude na 20 znaku", takze se to kontroluje nekde na strane JavaScriptu (tam to bude pocet Unicode znaku, takze v pohode), potom to nekdo pretahne do Javy, kde tech 15 Unicode znaku muze byt take 30 "charu" (takze to napriklad vyhodi vyjimku) a jak se s tim poperou databaze je uz na delsi vypraveni (btw. DB/2 to ma tak domotane, ze se v tom nevyznaji ani na jejich hotline)
Aha, měl jsi na mysli surrogate pairs, tedy čtyřbajtové znaky v UTF-16. To je podobný problém jako čeština v UTF-8, ale lépe schovaný. V Javě ani v PHP raději neměřím délku stringů a vyhýbám se i dalším řetězcovým operacím. Pokud vím, MySQL si s tím poradí, protože na každý znak si rezervuje 4 bajty a ukládaný text zařízne dle parametru ve varchar.
Myslím si, že když programátor nedělá hovadiny, tak se s tímto problémem do křížku ani nedostane.