Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem MySQL + UTF8 (problemy s diakritikou)

Google sice pomohlo, ale len ciastocne... cize:

Operacny system WinXP, Apache2Triad (phpMyAdmin 2.7.0, MySQL 5.0.18, PHP Version 5.1.2, Apache Server 2.2.4)

Databazka je na localhoste a je enkodovana v UTF8
Stranka (php skripty) maju v hlavicke taktiez
<meta http-equiv="content-type" content="text/html; charset=utf-8">

avsak vysledky dotazov su vracane v latin1 (smiesne znaky namiesto ľščťžýá...)
ine texty (nie vysledky dotazov) su zobrazovane spravne (pochopitelne kedze boli pisane v utf8 a stranka je zobrazovana v utf8)

ak prepnem manualne kodovanie v opere na ISO-8859-1 (tiez zname ako latin1) vysledky dotazov su zobrazovane spravne s diakritikou, avsak ostatne texty uz nie...

mysql_client_encoding() mi vracia taktiez latin1, cize problem je mi jasny - mysql (resp php komunikuje s mysql) v latin1

upravil som teda konektor.php (subor co inkludujem do kazdeho skriptu co potrebuje pristup k databaze) nasledovne

<?php
$sql = @mysql_connect('localhost', '', '');
mysql_query('SET NAMES UTF8');
$sql_db = @mysql_select_db('databazka', $sql);
?>

a vsetko ide - cize - hned je tu aj riesenie v tejto mojej otazke, ale ja som tvrdohlavy a - nezda sa mi to :) preco to mam robit takto "krkolomne"? ja chcem aby moj sql server bezal v utf8!

Předmět Autor Datum
skontroloval som teda charsety v mojej databazke (mysql servri) a vystup premennych (sql prikaz show…
wray 07.02.2007 11:45
wray
A ten príkaz si spustil z toho PHP, kde to vracia výsledky v latin1 alebo niekde až po nastavení kód…
los 07.02.2007 19:51
los
problém je možná v Apache - najdi si v jeho konfiguráku (httpd.conf nebo i jiný) AddDefaultCharset (…
ivitek 07.02.2007 12:21
ivitek
Týmto nastavením určí iba predvolené kódovanie stránky, ktorú dostane prehliadač. Apache do komuniká… poslední
los 07.02.2007 19:53
los
dik za tip skusil som zaremovat default charset v httpd.default.conf a httpd.conf ale nepomohlo :(
wray 07.02.2007 12:58
wray
OK, jen doufám, že jsi po změně konfiguráku restartoval Apache :-), pak mi to taky nepomáhalo :-) BT…
ivitek 07.02.2007 13:03
ivitek
Do tveho problemu presne nevidim, UTF8 pouzivam u XML, ale mam zkusenost ze WindowsXP ve spojeni s n…
Redmarx N 07.02.2007 13:02
Redmarx N
takto - aby sme to nekomplikovali - ono mi to funguje (ked dam za kazde pripojenie mysql_query('SET…
wray 07.02.2007 13:47
wray
když se podíváš v phpMyAdmin na strukturu tabulky, jsou tam sloupce: sloupec, typ, porovnávání(colla…
ivitek 07.02.2007 13:59
ivitek
Ano aj tam je slovak utf8 - v phpmyadminovi som nastavil utf (utf8 slovak) vsade kde sa dalo... pro…
wray ... 07.02.2007 15:16
wray ...
V souboru s daty pro připojení do databáze mám řádek mysql_query("SET CHARACTER SET utf8") bez toho…
ivitek 07.02.2007 15:30
ivitek

skontroloval som teda charsety v mojej databazke (mysql servri) a vystup premennych (sql prikaz show variables like "c%" ) je:

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir C:\apache2triad\mysql\share\charsets\
collation_connection utf8_slovak_ci
collation_database utf8_general_ci
collation_server latin1_swedish_ci

cize - ma velmi drazdia tie zmienky o latin1... no a toto by som rad zmenil - aby vsade bolo utf8 lebo verim ze to vyriesi moj problem.

Takze - ako sa daju nastavovat tieto premenne v sql? resp - kde je nejaky konfiguracny subor pre mysql (zufalo ho neviem najst)

A ten príkaz si spustil z toho PHP, kde to vracia výsledky v latin1 alebo niekde až po nastavení kódovania pre spojenie (napr. v phpMyAdmin)? Pretože podľa tých premenných by si mal dostať výsledok v kódovaní utf8 a nemal by byť žiaden problém...

Konfigurácia je v adresári, kde si nainštaloval MySQL v súbore my.ini. V mojom prípade je to C:\Program Files\MySQL\MySQL Server 5.0\my.ini

Manuál: http://dev.mysql.com/doc/refman/5.1/en/charset-conn ection.html

Do tveho problemu presne nevidim, UTF8 pouzivam u XML, ale mam zkusenost ze WindowsXP ve spojeni s nekterymi programy likviduje pri preukladani tenhle format. V linuxu podobne problemy nejsou.
Takze ztezka rici, co to dela tobe.

takto - aby sme to nekomplikovali - ono mi to funguje (ked dam za kazde pripojenie mysql_query('SET NAMES UTF8');)

skor ma teraz zaujima ako zariadit tie premenne v sql aby som natvrdo nastavil na utf8 - resp. odkial sa tam este beru zmienky o latin1, dokonca o latin1 swe?

(jo apache som restartol)

když se podíváš v phpMyAdmin na strukturu tabulky, jsou tam sloupce: sloupec, typ, porovnávání(collate) - jaké máš tady kódování? swe - to by byla chybka v MySQL(švédská firmička) používá právě tohle jako výchozí kódování :-) změň to na utf8_slovak_ci odjinud swe neznám...

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