Autor Zpráva
Roman23
Profil *
Zdravím všechny
při testování své webové prezentace jsem narazil na malý problém. Používám kódování utf8 a při výpisu vše funguje. Stránky se zobrazují správně i s českým kódováním. UTF8 mám nastaveno u tabulek, porovnání, výpisu i v hlavičce webu. Pokud chci však data přes svůj formulář zpětně uložit do MySQL DB, některé české znaky (ě,č,ř...) se nahradí otazníky. Zkoušel jsem už asi 10 způsobů jak to ošetřit, ale marně. Moc by mi pomohla dobrá rada.
Děkuji
Joker
Profil
Roman23
Máte správně nastavené kódování přímo v databázi?
Máte správně nastavené kódování pro přenos dat (SET NAMES)?
Používáte všude stejné kódování (v databázi, co o sobě říká stránka, v čem jsou uložené soubory se stránkou, PHP skripty)?
Roman23
Profil *
Joker
Stránky jsou uloženy v utf8, výchozí nastavení db je utf8, nastavení tabulek je defaultně utf8 a porovnání jednotlivých sloupců je také utf8. Ihned po připojení k db je vložen dotaz 'SET NAMES utf8'. Vše se na stránce zobrazí OK, jenom při odeslání formuláře a následném zápisu jsou některé znaky nahrazeny otazníkem.
japlavaren
Profil
neviem, ci ti to pomoze ale ja pouzivam

SET CHARACTER SET utf8, NAMES utf8;


ta snad..
Roman23
Profil *
japlavaren
A jak máš řešené odesílání dat pomocí formuláře a následmý zápis? Před INSERTEM dáváš ten dotaz 'SET CHARACTER SET utf8, NAMES utf8' ?? Nebo ho používáš vždy a před každým dotazem??
japlavaren
Profil
si sa zblaznil pred kazdym dotazom?
malo by to platit kym neukoncis spojenie s db (to je zvycajne konec scriptu)

pouzivam to takto:
mysql_connect();
mysql_select_db();
mysql_query("SET CHARACTER SET utf8, NAMES utf8");

daj to do suboru kde sa pripajas do db alebo si to pripis do funkcie
Roman23
Profil *
japlavaren
Přesně takto to mam. Mam to v konstruktoru třídy, kterou používám pro práci s databází, ale při INSERTU se mi ty znaky stejně nahradí otazníkem :((
nightfish
Profil
ale při INSERTU se mi ty znaky stejně nahradí otazníkem :((
zřejmě vstup není v utf-8 a nebo není správně nastavené kódování v tabulce... ty otazníky vidíš kde? v phpMyAdminovi?
Roman23
Profil *
Tak už to běží. Chyba byla v tom že jsem ty dotazy "SET CHARACTER SET utf8, NAMES utf8", jsem měl rozděleny. Když se napíšou tímto způsobem do jednoho tak to krásně vše funguje. Moc díky japlavaren, nenapadlo by mě to napsat takto.
japlavaren
Profil
problem bol v tom, ze ked das
mysql_query("dotaz1; dotaz2")

tak z bezpecnostnych dovodov sa vykona len jeden
takze to mozes spravit takto:
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET NAMES utf8");

ale naco posielat 2 dotazy ked sa to da do jedneho
mysql_query("SET CHARACTER SET utf8, NAMES utf8");
marwik
Profil *
Díky mnohokrát, řešil jsem stejný problém půlku dopoledne!
Anonymní
Profil *
neřešil jste někdo zpětný proces narovnání dat v MySQL poté, co chvíli nebylo zapnuté set names utf8? Z php stránek v utf8 se to do MySQL navkládá de facto znovu enkodované do utf8.
tiso
Profil
Anonymní: pokiaľ tých pokazených dát nie je veľa tak by si to mohol opraviť ručne.
Kajman_
Profil *
http://php.vrana.cz/prevod-kodovani-mysql.php
Anonymní
Profil *
2tiso: díky, ale těch záznamů je několik set (necelých 800), samozřejmě by to šlo ručně, ale myslím, že si těch pár "příjemně" prožitých hodin mohu odpustit
2Kajman_: super! to vypadá schůdně
Anonymní
Profil *
2Kajman_: tak bohužel, z utf8^2 to odutf8kovat na jednoduché utf8 nezabírá...
Anonymní
Profil *
nakonec jsem rezignoval a napsal si na to skript s polem zaměňovaných znaků:-(

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: