IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Čeština v PMA

Aktivity
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 Hartinger
Vlastník
Avatar
Odpovídá na wimpy
David Hartinger:25.11.2013 11:20

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

Nahoru Odpovědět
25.11.2013 11:20
New kid back on the block with a R.I.P
Avatar
wimpy
Člen
Avatar
 
Nahoru Odpovědět
25.11.2013 11:22
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na wimpy
David Hartinger:25.11.2013 11:29

No tak to bude asi ten problém :)

Nahoru Odpovědět
25.11.2013 11:29
New kid back on the block with a R.I.P
Avatar
wimpy
Člen
Avatar
Odpovídá na David Hartinger
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 Hartinger
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 Hartinger
Vlastník
Avatar
Odpovídá na wimpy
David Hartinger: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
New kid back on the block with a R.I.P
Avatar
wimpy
Člen
Avatar
Odpovídá na David Hartinger
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 Hartinger
Vlastník
Avatar
Odpovídá na wimpy
David Hartinger: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
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na wimpy
David Hartinger: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
New kid back on the block with a R.I.P
Avatar
wimpy
Člen
Avatar
Odpovídá na David Hartinger
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 Hartinger
Vlastník
Avatar
Odpovídá na wimpy
David Hartinger: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
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na wimpy
David Hartinger: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
New kid back on the block with a R.I.P
Avatar
coells
Tvůrce
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 Hartinger
Vlastník
Avatar
Odpovídá na coells
David Hartinger: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
New kid back on the block with a R.I.P
Avatar
coells
Tvůrce
Avatar
Odpovídá na David Hartinger
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 Hartinger
Vlastník
Avatar
Odpovídá na coells
David Hartinger:25.11.2013 12:40

PHPMyAdmin je stoprocentně v UTFku.

Nahoru Odpovědět
25.11.2013 12:40
New kid back on the block with a R.I.P
Avatar
coells
Tvůrce
Avatar
Odpovídá na David Hartinger
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
Tvůrce
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
Tvůrce
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
Tvůrce
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.