Smajlíci v databázi

Vyřešeno2.07K zhlédnutíWebhosting
1

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.

Role: Zákazník
Otázka je uzamčena pro nové odpovědi.
Vybral nejlepší odpověď

Jaký máte důvod uchovávat znak smajlíka přímo v databázi?
Já osobně používám png obrázek a PHP str_replace s dvěma poli, jedno pro textový smajl ( :), 😀 ) a druhá přímo pro HTML tag img s cestou daného smajla, všichni vidí to samé.
Dle náročnosti na stránce používám funkci smajluj buď při ukládání a nebo naopak text nechávám původní a smajluju až při výpisu.

Je to nejjednodušší způsob. Nepotřebuji vymýšlet žádné další skripty pro nahrazení 🙂 => 😀.

4
FH140428 644 - WEDOS Internet, a.s. 0 Comments

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

Role: Podpora
Vybral nejlepší odpověď
3
FH140428 644 - WEDOS Internet, a.s. 0 Comments

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á.

Role: Podpora
Odpověděl na otázku
0

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.

Role: Zákazník
Změnil status na publikováno
0

Ano už to vše funguje. Děkuji za pomoc.

Role: Zákazník
Změnil status na publikováno