Smajlíci v databázi
Dobrý den,
rád bych se zeptat jak v databázi uchovávat smajlíky, na internetu jsem se dočetl že pomoci utf8mb4.
Tak jsem změnit databázi, tabulky a i dané sloupce na utf8mb4, ale stále se mi místo smajlíků ukazují otazníky.
Děkuji.
4 Answers
Dobrý den,
znaková sada nastavená pro character_set_result by to neměla způsobovat. Ještě mě napadlo, že možná používáte starou verzi PMA na adrese https://pma-old.wedos.net/. V této verzi PMA Vám to fungovat nebude. Je potřeba použít PMA v novější verzi, která je dostupná na adrese: https://pma.wedos.net/4.4.15/
Testoval jsem to na standardní webhostingové DB se stejným nastavením znakových sad, jako uvádíte na obrázku výše a ukládání smajlíků funguje v pořádku.
Při spojení k DB v nějakém scriptu je potřeba před zápisem nebo výpisem na výstup nastavit znakovou sadu pro spojení s DB také na „utf8mb4“. V PHP to uděláte například pomocí tohoto příkazu: https://www.php.net/manual/en/mysqli.set-charset.php
Dobrý den,
ano, znaková sada utf8mb4 je vhodná k ukládání smajlíků. Po změně znakové sady databáze, tabulek i sloupců je potřeba do tabulky uložit text se smajlíky znovu. Pokud jste pouze změnil znakovou sadu a ponechal původní data, tak to fungovat nebude, protože znaky smajlíků byly znehodnoceny tím, že tam byla původně nastavená jiná znaková sada.
Také se ujistěte, že script, který do databáze data ukládá, pracuje se znakovou sadou utf8. Stránka, která data zobrazuje, rovněž musí pracovat se znakovou sadou utf8 (popřípadě jinou, která ovšem musí smajlíky podporovat).
Nakonec je potřeba poznamenat, že některé smajlíky nemusí umět správně vykreslit ani samotný operační systém, protože je nemusí obsahovat znaková sada, kterou OS používá.
Po změně na utf8mb4 jsem znova zkusil vložit do databáze smajlíky pomocí SQL dotazu v PMA.
Možná to dělá character_set_result, protože je na utf8, ale já nevím jak ho změnit na utf8mb4.
Ano už to vše funguje. Děkuji za pomoc.