Portál AbcLinuxu, 10. května 2025 12:11

Dotaz: UTF8 v mysql - diakritika při hledání

30.1.2009 10:24 Hollowman | skóre: 4
UTF8 v mysql - diakritika při hledání
Přečteno: 1859×
Odpovědět | Admin

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.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

30.1.2009 12:05 razor | skóre: 33
Rozbalit Rozbalit vše Re: UTF8 v mysql - diakritika při hledání
Odpovědět | | Sbalit | Link | Blokovat | Admin

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 :)

30.1.2009 16:09 razor | skóre: 33
Rozbalit Rozbalit vše Re: UTF8 v mysql - diakritika při hledání

Tak jsem to zkoušel a zafungovalo mi nastavit collate na utf8_bin: select * from obce where nazev %bělá% collate utf8_bin

30.1.2009 16:15 razor | skóre: 33
Rozbalit Rozbalit vše Re: UTF8 v mysql - diakritika při hledání

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.

31.1.2009 23:28 Hollowman | skóre: 4
Rozbalit Rozbalit vše Re: UTF8 v mysql - diakritika při hledání

 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... 

31.1.2009 23:58 l4m4
Rozbalit Rozbalit vše Re: UTF8 v mysql - diakritika při hledání
Zapnul bych mysql query log a podíval se na opravdu vykonaný dotaz. Nemůže se to někde nějak blbě překódovat (např. dvakrát do UTF-8 nebo cojávím)?
1.2.2009 09:22 razor | skóre: 33
Rozbalit Rozbalit vše Re: UTF8 v mysql - diakritika při hledání

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

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.