ublaboo/datagrid: podivné filtrování s českými znaky
- forkman
- Člen | 72
Ahoj, začal jsem používat ublaboo/datagrid, mám verzi 6.9.4 a PHP 7.4, ale jakmile zkouším filtrovat podle řetězce s českými znaky, nezobrazí se žádné výsledky. Díval jsem se do Debug baru na SQL dotazy a je to v pořádku. Problém je ten, že jakmile ten dotaz pastnu do phpmyadmina, nenajde to taky nic. Když ten SQL dotaz napíšu ručně, funguje to podle očekávání, opravdu je to 1:1 stejný řetězec, ale jakmile to zkonvertuju do HEX, je vidět, že jsou ty řetězce jiné. Co s tím jde udělat? :-D
- forkman
- Člen | 72
Tak jsem zjistil co to dělá, ale nevím jak se toho zbavit. Pokud je tam písmeno s diaktritikou, kóduje se to extra složitě – např. písmeno „š“ je kódované 0×73CC8C, tj. jako malé „s“ 0×73 a následně háček 0xCC8C, místo toho aby to bylo 0xC5A1. Dumpoval jsem si hodnoty z filtračního formuláře gridu a už tam je to špatně, i když do formuláře to posílám jako 0xC5A1. Podobné je to s čárkou. Neprovádí datagrid nějakou magickou konverzi? Nejde to nějak zpět zkonvertovat do jednoho znaku? Nikde jsem to ale nenašel.
Edit: Existuje na to built-in funkce v PHP, používá se to takto:
$word = \Normalizer::normalize($word);
Přidal jsem to na řádek 240 v souboru NetteDatabaseTableDataSource.php a vše už funguje. Snad to někomu pomůže :-)
Editoval forkman (16. 3. 2022 14:25)