Auto HI-FI Club CZ

autohifi,auto hi-fi,auto hifi,autohificlub,auto hi-fi club,club, klub,fórum,autorádio,autozesilovač,autorádio cd,autorádio mp3,autorádio dvd, tuning,srazy,tuningshow,klub,emma,dbdrag,tuning,autotuning,carstyling, tlumeni, Alpine,octavia,Brax,Denon,Clarion,Pioneer,Sony,panasonic,Helix, Dynamat,dego,Hertz,Audison,Fusion,McIntosh,Focal,Rockford Fosgate,Dynaudio,JBL,xenony,becker,jvc,kenwood,ground zero,dietz,morel doorboardy ,zapojeni,felicia,pioneer,peugeot,zastavba,audio,306,repro,golf,instalace,dls,4x100,FELICIE,morpheus,helix,audi(forum)

o

Forum > Ostatní > PHP + MySQL rada

 o Navštíveno 565x o
o 28.09.2010, 10:34 | Bingi
Najde se tu někdo, kdo by mi poradil ohledně problému se znakovou sadou?


o 28.09.2010, 10:52 | Daryl (A)
dulezite je zvolit znakovou sadu v ramci pripojeni. Je vice mene jedno, v jake znakove sade je to ulozeno v DB. Tam se nastavuje pouze collation coz ma vlyv na vyhledavani/porovnavani ...

spravnou sadu nastavis pomoci mysql_query("SET NAMES 'utf8'"); po nastaveni pripojeni skrze mysql_db_connect. Jiste chapes, ze v tomto pripade je znakova sada utf-8. Pro windows-1250 uzijeme cp1250 a podobne.

Aktualne v MySQL 5.X je novejsi verze direktivy "SET NAMES" ale ted si ji nepamatuju a funguje i ten stary, jen je oznacen jako obsolete :)


Snad jsem pomoh ... GL
o 28.09.2010, 11:20 | Bingi
díky, MySQL je 5.1. Znakovou sadu používám utf-8. Když vytvořím tabulku a podívám se do MySQL Query Browser, tak vidím nesmysly. Ale když si dám dotaz a vypíšu obsah tabulky na stránku, je to ok. V MySQL QBrowser jsem si nastavil znakovou sadu tabulky na utf-8, ale bez výsledku.
když napísu v MySQL QBrowser: SHOW VARIABLES LIKE 'character_set_client';
odpoví mi, že čeká na utf-8.

Když si dám v mozzile vlastnosti stránky, píše kodování utf8.
A ještě jedna věc, proč když použiju v php příkaz UTF8_encode na výraz s diakritikou, tak se mi na stránce rozsype. Pokud by byl původní výraz již v utf-8, tak by mel zustat beze zmeny.
o 28.09.2010, 11:23 | Bingi
jo a kdyz použiju mysql_query("SET NAMES 'utf8'"); hned za mysql_connect, tak mi při vkládání dat s diakritikou do tabulky hodí : Incorrect string value: 'xC5x99ada' for column 'cesko_comment' at row 1
o 28.09.2010, 11:24 | Bingi
připadá mi to, jak kdybych nepsal v utf-8, ale znakovou sadu mám nastavenou jak v meta tagu, tak v headeru.
o 28.09.2010, 11:38 | Daryl (A)
predpokladam, ze k databazi se pripojujes na zacatku a odpojujes na konci.

Ta chybova hlaska spise pripomina programatorskou chybu, nez problem s kodovanim. mas to v uvozovkach ? spravne okotovane ? Co je to za pole ? (typ varchar ? text ?)
o 28.09.2010, 11:50 | Bingi
no s MySQL se teprve ucim, takze je to mozne. Ale proc bez diakritiky je vše ok? Myslel jsem taky, ze po tom co se mi ten text rozpadne, tak neprojde podminkou typu pole. Ale nastavil jsem pole na VARCHAR a stejny pripad.

$db = mysql_connect('localhost', 'uzivatel', 'heslo')or die('nepodařilo se spojit s databází, zkontrolujte přihlašovací údaje');
mysql_query("SET NAMES 'utf8'");
mysql_select_db('photoscene', $db) or die(mysql_error($db));

$ukol = 'INSERT INTO cesko ( cesko_name, cesko_comment)
VALUES ("zahrada", "Kroměříž" )';

$vysledky = mysql_query($ukol, $db) or die(mysql_error($db));

$ukol = 'SELECT cesko_name, cesko_comment
FROM cesko';

$vysledky = mysql_query($ukol, $db) or die(mysql_error($db));
while( $řádek = mysql_fetch_array($vysledky)) {
extract($řádek);
echo $cesko_name.$cesko_comment;
}

o 28.09.2010, 11:51 | Bingi
ale bez toho SET NAMES, to projde, ale je to rozpadle v databazi.
o 28.09.2010, 14:06 | Bingi
takže zdá se vyřešeno. Bylo potřeba nastavit znakovou sadu hned při vytváření databáze. Změna v MySQL Query Browseru nestačilo.

$databaze = 'CREATE DATABASE IF NOT EXISTS photoscene COLLATE utf8_czech_ci';
o 29.09.2010, 10:55 | Daryl (A)
To je divny. Cos měl predtim ? Já mám nekteré tabule i v úplne nesmyslných collation a nikdy jsem s tím problém nemel. Jak varchar tak text jsou na collation imunní. Projevi se to jen pri porovnávání nebo vyhledávání.
o 29.09.2010, 15:42 | Bingi | Upraveno: 2010-09-29 15:57:14
no před tím jsem to definované neměl.Jak jsem ale psal, při dotazu SHOW VARIABLES LIKE 'character_set_client';, mi MySQL odpoví že čeká na utf-8. Ale je třeba říct, že musím deinovat v COLLATE utf8_czech_ci'; když dám jenom ut-8, nebo utf-8_genaral_ci, nebo cokoliv jineho nez czech_ci, tak se to rozpadá.
o 29.09.2010, 15:51 | Mr.Scully
Přesně jako Daryl. Collation na tohle nemá vliv. Pokud máš collation třeba utf-8 a data ukládáš jako cp1250, pak pokud je vybereš zpátky jako cp1250, tak budou korektní. Akorát při řazení se to bude mrvit.
o 29.09.2010, 19:13 | Bingi
No pri vyberu zpet na stranku byli data zase ok. Chyba byla pouze v databazi. A bez toho řádku je to spatne, tak to na to musi mit vliv.
o 29.09.2010, 19:30 | Mr.Scully
Jak to může bejt "špatně v databázi"? Databáze je nějakej "nečitelnej" binární soubor, do kterýho to NĚJAK ukládáš a pak to NĚJAK vybíráš. Pokud ukládáš stejně jako vybíráš, tak nějaká collation tě absolutně nezajímá.
o 29.09.2010, 19:43 | Bingi
ja vím, že se ti to nechce asi celé číst:) . Jo máš pravdu, řešil jsem, že to bylo nečitelné v MySQL query browseru. který se mi nepodařilo nastavit tak, aby mi data ukazoval korektně. I když jsem v něm nastavil pro tabulku utf-8, nebylo to čitelné.
o 29.09.2010, 20:33 | Mr.Scully
Jo, soráč, nečetl jsem to celý :-) Jasně, v nějakém phpmyadminovi nebo query browseru to pak asi vypadá divně, ale určitě to není "špatně" :-) A collation by stejně vliv mít neměla, jen to nastavení znakové sady při připojení. Zkus třeba změnit collation "za běhu" a nic se při zobrazení nezmění.
o 29.09.2010, 20:36 | Bingi
no ja jsem to collation poslal jenom pri vytvoreni databaze. jinat ted pri provozu a tahani dat se neposila. a bezi to. Ani ale pomalu nevim co to je, to je pravda. Musim se na to poradne podivat, at vim o cem mluvime..
o  Zpět  o  Nahoru
o
 

Vložit nový příspěvek do fóra


  Pro vložení příspěvku musíte být přihlášen/a.
Stránka vygenerována za 0.3353 sekund.