Avatar
wimpy
Člen
Avatar
wimpy:

Ahoj. Už zase prosím o radu.
Zkouším pracovat s databází, v tabulce mám text, který se mi na webu zobrazuje česky správně. Ale v administraci (po příkazu Projít) vidím toto: Mimořádná malá provÄ›rka
Myslím si, že mám všude nastaveno utf8_czech_ci.
Ve skriptu mám: <meta http-equiv="content-type" content="text/html; charset=utf-8">
V PSPadu mám v nabídce Formát zatrženo UTF-8.
Děkuji předem za každou radu.

 
Odpovědět 25.11.2013 11:17
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:

Po připojení voláš dotaz SET NAMES utf-8?

Nahoru Odpovědět 25.11.2013 11:20
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:

No tak to bude asi ten problém :)

Nahoru Odpovědět 25.11.2013 11:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
wimpy
Člen
Avatar
Odpovídá na David Čápka
wimpy:

Možná jsem to špatně vysvětlil. Problém mám jenom s tím, že to není vidět česky v té databázi (v administraci). O tom příkazu "set names utf8" jsem našel, že řeší opačný problém, kdy je to v databázi dobře a špatně se to zobrazuje.

 
Nahoru Odpovědět 25.11.2013 11:31
Avatar
wimpy
Člen
Avatar
Odpovídá na David Čápka
wimpy:

Každopádně to jdu vyzkoušet. Zatím díky.

 
Nahoru Odpovědět 25.11.2013 11:34
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:

Ten příkaz tam musíš mít stejně, pravděpodobně se ti to do databáze špatně vkládá z aplikace, protože ho tam nemáš. Máš tedy rozbitá data.

MySQL má vnitřně texty vždy ve stejném kódování (asi v UTFku), to co nastavuješ v adminovi je jen porovnávání a používá se to jen když řadíš, aby to umělo českou abecedu. Když se z aplikace připojíš k DB, musíš zavolat SET NAMES, tím řekneš, v jakém kódování má aplikace s DB komunikovat. DB potom převádí odeslané/přijaté texty ze svého kódování na to vybrané.

Tvůj problém je ten, že DB posíláš v jiném kódování, že je nastaveno. Protože to v tom špatném kódování i čteš, myslíš si, že je vše v pořádku. Jenže v administraci vidíš, že je to v DB špatně uložené, nepovedl se převod na interní kódování v DB.

Nahoru Odpovědět  +1 25.11.2013 11:36
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
wimpy
Člen
Avatar
Odpovídá na David Čápka
wimpy:

Aha, už v tom začínám mít jasněji. Díky.
Bohužel se to ale chová i po úpravě pořád stejně. Ten kousek kódu vypadá takhle:
$spojeni = mysql_connect("wm22­.wedos.net","w2981­6_cwg","" );
mysql_select_db("d29816­_cwg");
mysql_query("SET NAMES 'utf-8'");
if ($_POST[zzada­ni]>"") mysql_query("INSERT INTO ukol (predmet,nakdy,za­dani) VALUES ('$_POST[ppred­met]','$_POST[nnak­dy]','$_POST[zza­dani]')");

 
Nahoru Odpovědět 25.11.2013 11:45
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:

Bude se to chovat pořád stejně, protože máš špatně ta data. Zkus tam vložit po této úpravě nový záznam, měl by být v DB správně.

Nahoru Odpovědět 25.11.2013 11:49
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:

Mimochodem, máš tam SQL injekci, rychle si to oprav, než ti to někdo nabourá. Asi by sis měl přečíst zdejší tutoriály.

Nahoru Odpovědět 25.11.2013 11:50
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
wimpy
Člen
Avatar
Odpovídá na David Čápka
wimpy:

Nových záznamů jsem už vložil několik, bez úspěchu.
Tutoriály (mimochodem velmi srozumitelně napsané) čtu, ale nejsem ještě tak daleko, bohužel. Zatím v db žádná potřebná data nemám...

 
Nahoru Odpovědět 25.11.2013 11:58
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:

No někde buď nevoláš SET NAMES nebo máš špatně kódování souboru/hlavičku. Jinak by to fungovalo. Můžeš si to zkusit na jediném souboru, kam dáš cvičné vložení něčeho, abys neladil celý web.

Nahoru Odpovědět 25.11.2013 12:04
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:

Případně si to zkus naopak, vlož si něco do databáze přes admina a potom to zkus korektně vypsat.

Nahoru Odpovědět 25.11.2013 12:09
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
coells
Redaktor
Avatar
Odpovídá na wimpy
coells:

Data máš uložená jako UTF-8, ale snažíš se je dekódovat jako CP-1250. To znamená, že v databázi jsou zřejmě správně, ale admin konzole běží v české lokalizaci a neporadí si s tím.

 
Nahoru Odpovědět 25.11.2013 12:18
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na coells
David Čápka:

Admin běží v UTFku, jinak by byl k ničemu :) Data má uložená sice v UTFku, ale špatně, protože je ukládal se špatnou hlavičkou.

Nahoru Odpovědět 25.11.2013 12:24
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:

S tím bych normálně souhlasil, jenže ten textový výstup obsahuje znaky, které se vyskytují při kódování utf-8->1250.

Pokud by to bylo 1250->utf-8, byly by tam úplně jiné znaky. A data uložená v chybném encodingu by šla tímhle směrem.

 
Nahoru Odpovědět 25.11.2013 12:39
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na coells
David Čápka:

PHPMyAdmin je stoprocentně v UTFku.

Nahoru Odpovědět 25.11.2013 12:40
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:

Ok, ok, já ti věřím :-)

 
Nahoru Odpovědět 25.11.2013 12:44
Avatar
wimpy
Člen
Avatar
Odpovídá na coells
wimpy:

Ta testovací data z tutoriálu vidím v db správně. Takže to asi opravdu bude v tom vstupu. Jdu si najít něco o té hlavičce...

 
Nahoru Odpovědět 25.11.2013 12:53
Avatar
wimpy
Člen
Avatar
Odpovídá na wimpy
wimpy:

Hurá! Nakonec pomohlo tohle:
mysql_query("SET character_set_cli­ent=utf8");
mysql_query("SET character_set_con­nection=utf8");
mysql_query("SET character_set_re­sults=utf8");
Ani nevím, který z nich:)

 
Nahoru Odpovědět 25.11.2013 14:25
Avatar
Kit
Redaktor
Avatar
Odpovídá na wimpy
Kit:

Zkus místo nich tohle:

mysql_query("SET NAMES utf8");
Nahoru Odpovědět 25.11.2013 14:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na wimpy
Kit:

Pokud je ta databáze nevhodně nastavená, tak se po připojení musí přidat ještě jeden řádek:

mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
Nahoru Odpovědět 25.11.2013 15:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
wimpy
Člen
Avatar
Odpovídá na Kit
wimpy:

No to taky funguje, ale to už jsem tam několikrát zkoušel. Bohužel s jinou syntaxí (někde jsem to zkopíroval): mysql_query("SET NAMES 'utf-8'");
Je to opravdu tak odlišné?
Každopádně díky za reakci.

 
Nahoru Odpovědět 25.11.2013 15:08
Avatar
Kit
Redaktor
Avatar
Odpovídá na wimpy
Kit:

Nepatří tam ten spojovník. Místo utf-8 má být utf8. Apostrofy tam být nemusí. Problém tedy není v syntaxi, ale v chybném názvu znakové sady.

Nahoru Odpovědět 25.11.2013 15:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
wimpy
Člen
Avatar
Odpovídá na Kit
wimpy:

No jo sakra. Díky.

 
Nahoru Odpovědět 25.11.2013 15:14
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na wimpy
Inoue Yūki:

Ono to dost mate. Někdy se to píše, někdy ne. :D

Nahoru Odpovědět 25.11.2013 15:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 26 zpráv z 26.