Portál AbcLinuxu, 10. května 2025 12:11
zdravíčko lidičky,
potřeboval bych radu či vysvětlení.
Mám mysql DB v kodování utf8_czech_ci. V ní mimo jiné sloupec který obsahuje názvy obcí.
Když tento prohledám s tím že hledám %bělá% tak mi to nalezne správné výrazy ale i výraz bez diakritiky např. kbelany. Nemůžu se dopídít proč se tak děje.
Zdar, podívej se na toto: http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html případně: http://dev.mysql.com/doc/refman/5.0/en/charset-collation-effect.html .
Snad by ti mohlo pomoci nastavit collation na např latin2_czech_cs. Ale nezkoušel jsem to :)
Tak jsem to zkoušel a zafungovalo mi nastavit collate na utf8_bin: select * from obce where nazev %bělá% collate utf8_bin
Ono mi teda funguje i : select ... collate utf8_czech_ci :) Nefunguje to akorát když dám collate utf8_unicode_ci nebo utf8_general_ci . Zkus do toho dotazu explicitně dát to collate utf8_czech_ci.
dík za help ale funguje mi to nějak na půl. Když ten dotaz zadám v phpmyadminu tak je s to bin ok... Ale kdyz to tam jde ze stranek tak se nic nevypise a chybu to taky nehodi...
Jestli neni chyba v nastavení znakových sad při komunikaci se serverem. Pokud použiješ: SET NAMES, tak se ti nastaví collation na defaultní pro dané kódování, což pro utf8 je právě utf8_general_ci u kterého to nefunguje. Zkus při nastavování znakový sady explicitně uvést collate např: SET NAMES utf8 collate utf8_czech_ci
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.