Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP a MySQL kódování

MySQL DB: staré tabulky se švédským kódováním textů, nové s utf8_czech_ci
Web: Windows-1250
DB -> web jsem vymyslela jak korektně zobrazovat české znaky z nových i ze starých tabulek.
Web > DB prasí češtinu z utf8_czech_ci.
Spojení s DB žádné kódování nastavované nemá.
Kódování webu nemám možnost změnit - je v souboru společném pro všechny stránky webu, k němuž nemám přístup.
Nastavit kódování v DB na cp1250 jsem taky zkoušela úplně jako první, ale pak mi to prasí znaky, které tam zapisuju přes phpMyAdmina na Linuxu.

Nepomáhá ani:

$vysledek = mysql_query("SET NAMES utf8");
$vysledek = mysql_query("SET CHARACTER SET utf8"); 	
$vysledek = mysql_query("ALTER TABLE m_kariera DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci");
$ulice = iconv("Windows-1250", "UTF-8", $ulice);

Nějaký nápad co s tím by nebyl?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Hezky si to představuješ, ale na to, že máš část DB v nějakém švédském kódování a část v UTF8-czech…
Craft 27.11.2009 23:02
Craft
HEURÉKA!!! Funguje mi to, i když si myslíš, že je marná snaha. Stačilo napsat správné 2 řádky a dát…
Anicka 30.11.2009 17:35
Anicka
V tom článku opisuje predposledný odstavec presne tvoj prípad - stránka vo Windows-1250 a databáza v…
los 30.11.2009 23:01
los
Právě že ne. Žádné iconv nepotřebuju!!! Fakt. Se SET NAMES 'cp1250' (bez character_set_connection) t…
Anicka 01.12.2009 17:11
Anicka
Práveže som to skúšal. poslední
los 01.12.2009 20:28
los

Hezky si to představuješ, ale na to, že máš část DB v nějakém švédském kódování a část v UTF8-czech a web používá kódování win1250 a nechceš konvertovat DB ani změnit kódování webu, tak marná jiná snaha. Ono je někdy kumšt zprovoznit i kódování UTF8, proto to mnozí řeší win1250.
Jenom můžu ujistit, že žádný php příkaz nebude schopen docílit správného zobrazování diakritiky bez ujednocení kódování jak webu, tak DB, takže pokud chceš mít diakritiku ok a to jak starých, tak nových textů budeš muset provést konverzi DB do win1250 a případně provést ruční korekci, jinak to nepůjde.

HEURÉKA!!! Funguje mi to, i když si myslíš, že je marná snaha. Stačilo napsat správné 2 řádky a dát je na správné místo (před insert do DB):

MySQL_Query("SET character_set_client = cp1250");
MySQL_Query("SET character_set_connection = utf8");

Celý článeček na toto téma (v češtině) je na: interval.cz.

Samozřejmě uznávám, že nejjednodušší je mít všechno ve stejném kódování a u nově dělané aplikace bych to tak určitě udělala.

V tom článku opisuje predposledný odstavec presne tvoj prípad - stránka vo Windows-1250 a databáza v UTF-8. Vyriešené to tam je normálne (SET NAMES 'cp1250').

To nastavenie character_set_connection na utf8 ti môže fungovať, ak robíš súčasne navyše tú konverziu pomocou iconv. Keby si ale použila hneď na začiatku SET NAMES 'cp1250', tak by si nepotrebovala zbytočne používať iconv. Ale načo robiť veci jednoducho...

Právě že ne. Žádné iconv nepotřebuju!!! Fakt. Se SET NAMES 'cp1250' (bez character_set_connection) to nefungovalo, to jsme zkoušeli hned na začátku. Musí tam být jak SET NAMES, tak character_set_connection. Jestli mi to nevěříš, můžeš si to zkusit sám, odhaduju, že Ti to zabere cca 15 minut.

Zpět do poradny Odpovědět na původní otázku Nahoru