Nettrine UTF8 kódování – špatné ukládání, v aplikaci se zobrazuje naštěstí OK
- MikKuba
- Člen | 83
Ahoj,
Bojuji se správným ukládáním do databáze. Používám Nettrine,
lokálně to je v pořádku, MySQL verze 8.1.
Ale na serveru je MariaDB 10+ s nastavenou znakovou sadou UTF8 – běží
u Wedosu.
Pokud se podívám do lokální databáze, vidím tam vše uložené
správně – tedy i texty s diakritikou.
Ale na produkční databázi u Wedosu se sice vše zobrazuje správně
v aplikaci, ale v databázi to nezvládá diakritiku. Sloupce jsou
utf8_unicode_ci, ale třeba místo vypsání jména „Štěpánka“
v databázi vidím „Å tÄ›pánka“.
Zkusil jsem do configu nastavit i charset a options, ale nijak to při ukládání nepomohlo.
doctrine:
host: wedos
user: login
password: pass
dbname: db
charset: UTF8
options:
1002: "SET NAMES 'UTF8' COLLATE 'utf8_unicode_ci'"
Hádám, že by to mohlo být něco tím DB serverem, který je jiný. Půjde prosím zůstat na tom u Wedosu a zároveň zprovoznit, abych i v jejich phpMyAdmin viděl zadané hodnoty správně a ne takto rozsypané?
Děkuji předem!
- MikKuba
- Člen | 83
MajklNajt napsal(a):
ak to v aplikácií vidíš správne, a zobrazuje ti to rozbité iba cez phpmyadmina, potom treba hľadať problém tam – v phpmyadminovi
Tam se dostupná nastavení taky tváří, že jsou v utf8, někde i utf8_czech_ci, či unicode. Tedy vše co by mělo podporovat české znaky.
Možná ještě dobře dodat, že na stejném serveru mám několik let starou Nette aplikaci, kde ale pro práci s databází nepoužívám Doctrine, ale čistě Nette\Database\Context a tam se mi tento problém s kódováním neděje. To co uložím/vidím v aplikaci, tak vidím přesně i v databázi.
Ale pokud teda není na vině Doctrine, tak nejspíš kontaktovat podporu Wedosu…?
- MikKuba
- Člen | 83
Tak řešením bylo nastavit kódování i do configu, což všechny SQL dotazy opravdu navede na správné kódování.
Takže nastavení cellé nettrine vypadá následovně:
nettrine.dbal:
debug:
panel: %debugMode%
connection:
driver: pdo_mysql
host: %doctrine.host%
user: %doctrine.user%
password: %doctrine.password%
dbname: %doctrine.dbname%
charset: utf8
default_table_options:
charset: utf8
collate: utf8_unicode_ci