Nettrine UTF8 kódování – špatné ukládání, v aplikaci se zobrazuje naštěstí OK

MikKuba
Člen | 83
+
0
-

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!

MajklNajt
Člen | 498
+
0
-

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

MikKuba
Člen | 83
+
0
-

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
+
+2
-

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
Tharos
Člen | 1030
+
0
-

@MikKuba Díky za pomoc… 😉