Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij slevové akce 80% výuky zdarma!
birthday
Avatar
wimpy
Člen
Avatar
wimpy:25.11.2013 11:17

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:25.11.2013 11:20

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

Nahoru Odpovědět
25.11.2013 11:20
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
wimpy
Člen
Avatar
 
Nahoru Odpovědět
25.11.2013 11:22
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:25.11.2013 11:29

No tak to bude asi ten problém :)

Nahoru Odpovědět
25.11.2013 11:29
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
wimpy
Člen
Avatar
Odpovídá na David Čápka
wimpy:25.11.2013 11:31

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:25.11.2013 11:34

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:25.11.2013 11:36

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
25.11.2013 11:36
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
wimpy
Člen
Avatar
Odpovídá na David Čápka
wimpy:25.11.2013 11:45

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:25.11.2013 11:49

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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:25.11.2013 11:50

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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
wimpy
Člen
Avatar
Odpovídá na David Čápka
wimpy:25.11.2013 11:58

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:25.11.2013 12:04

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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wimpy
David Čápka:25.11.2013 12:09

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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
coells
Redaktor
Avatar
Odpovídá na wimpy
coells:25.11.2013 12:18

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:25.11.2013 12:24

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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:25.11.2013 12:39

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:25.11.2013 12:40

PHPMyAdmin je stoprocentně v UTFku.

Nahoru Odpovědět
25.11.2013 12:40
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:25.11.2013 12:44

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

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

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:25.11.2013 14:25

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:25.11.2013 14:46

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:25.11.2013 15:03

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:25.11.2013 15:08

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:25.11.2013 15:12

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:25.11.2013 15:14

No jo sakra. Díky.

 
Nahoru Odpovědět
25.11.2013 15:14
Avatar
Odpovídá na wimpy
Neaktivní uživatel:25.11.2013 15:27

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

Nahoru Odpovědět
25.11.2013 15:27
Neaktivní uživatelský účet
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.