Autor Zpráva
luma64
Profil
Pozdravujem ! Ako sa má pls správne nastaviť pre korektné zobrazenie diakritika pri nasledovnom mojom probléme:

stĺpec v tabuľke:
dodavmeno` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_slovak_ci DEFAULT NULL

pri zobrazení stĺpca v phpMyAdmin: Zásobovanie a.s.
zobrazenie na stránke: Z�sobovanie a.s.

Na stránke, kde s týmto zobrazením pracujem je nastavenie:
$pdo->exec("SET CHARACTER SET utf8");
$pdo->exec("set names 'cp1250'");

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Php stránka je kódovaná UTF-8 BOM.

Ďakujem !


Ešte pre doplnenie; kódovanie "set names 'cp1250'" pouzivam kvôli tomu, že do danenj tabuľky importujem data z xls tabuľky
Kajman
Profil
Pro výpis dat použijte set names utf8, jen při insertu dat z xls do db, použijte cp1250.
luma64
Profil
Prepačte , ale aký je rozdiel medzi Vašim a mojim zápisom ?
anonym_
Profil *
luma64:
Zkus si přečíst to, co psal Kajman, ještě jednou a pomaleji.
Firibix
Profil
Reakce na lumu64:
Definice sloupce v tabulce (`dodavmeno` varchar(100) CHARACTER SET utf8mb4) udává, že data v něm uložená jsou v kódování UTF-8. Příkaz SET NAMES cp1250 specifikuje, že databáze má při komunikaci s PHP převést data do kódování Windows 1250. Protože webová stránka je podle <meta> tagu kódována v UTF-8, diakritika se rozbije. Správně bys při výpisu dat do stránky měl použít SET NAMES utf8mb4 (a SET CHARACTER SET smazat), jelikož kódování stránky a datové komunikace se musí shodovat. *

Naopak při importu dat kódovaných ve Windows 1250 musíš použít SET NAMES cp1250, aby databáze věděla, že s ní v tomto kódování komunikuješ, a při ukládání do UTF-8 sloupce data do UTF-8 kódování převedla.

* Kódování uft8mb4 odpovídá skutečnému UTF-8, samotné utf8 v MySQL znamená osekané UTF-8.
luma64
Profil
Ked som upravil php kód ako mi doporučil Kajman a navyše ešte doplnil riadok, ktorým som upravil vkladanô hodnotu , zápis do tabulky aj výpis na obrazovku je správny

$dodavmeno = iconv('windows-1250', 'UTF-8' ,  $dodavmeno);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0