ublaboo/datagrid: podivné filtrování s českými znaky

forkman
Člen | 72
+
0
-

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

Kamil Valenta
Člen | 752
+
0
-

Jak je definována tabulka, resp. textové sloupce? Jaké collation mají?

forkman
Člen | 72
+
0
-

Aby to info bylo kompletní, mám to v MySQL a collation je utf8_czech_ci, s minulým datagridem problém nikdy nebyl.

forkman
Člen | 72
+
0
-

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 0×CC8C, místo toho aby to bylo 0×C5A1. 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 0×C5A1. 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)