Diskuze: psaní háček do databáze

PHP PHP psaní háček do databáze American English version English version

Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

chtěl bych se zeptat proč mi nechce databáze vzít písmena ř a č a místo nich míše otazníky mám nastaveno
CHARACTER SET cp1250 COLLATE cp1250_czech_cs
a stejně mi to ř a č nebere

 
Odpovědět 23.5.2013 13:15
Avatar
Kit
Redaktor
Avatar
Odpovídá na Milan Gallas
Kit:
SET NAMES cp1250;

Nic víc tam psát nemusíš. Data tam nahrej znovu.

Nahoru Odpovědět 23.5.2013 13:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Kit
Milan Gallas:

PDO::ATTR_ERRMODE => PDO::ERRMODE_EX­CEPTION,
PDO::MYSQL_AT­TR_INIT_COMMAND => "SET NAMES cp1250"

nefunguje ř a č mi to stejně nevypisuje

 
Nahoru Odpovědět 23.5.2013 13:34
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Milan Gallas
David Čápka:

A funguje ti to v adminovi? Třeba máš aplikaci blbě. Kdybys používal UTF-8, nemusíš takové věci vůbec řešit.

Nahoru Odpovědět  +1 23.5.2013 13:47
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
Kit
Redaktor
Avatar
Odpovídá na Milan Gallas
Kit:

Zřejmě vstupní data nemáš v cp1250, ale možná v UTF-8. V tom případě je samozřejmě nutné napsat

SET NAMES utf8;
Nahoru Odpovědět 23.5.2013 13:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Kit
Milan Gallas:

měl sem utf8 a nepsaloto ani čárky tak nevim.

 
Nahoru Odpovědět 23.5.2013 13:52
Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

Dal sem tam cp1250 tak to začalo psát čákra a ž,š ě
poté sem jěště nastavil tabulku na cp1250_czech_cs
ale stejně mi to č a ř nebere tak nevim proč :(

 
Nahoru Odpovědět 23.5.2013 13:54
Avatar
Kit
Redaktor
Avatar
Odpovídá na Milan Gallas
Kit:

Ale takhle se nedá experimentovat. Musíš vědět, jaké znaky tam dáváš. Pokud je to UTF-8, tak musíš do deklarace napsat utf8. Pokud tam dáváš Latin2, musíš tam napsat latin2.

Jaké znaky do té DB cpeš? To nesmíš hádat, ale musíš vědět a podle toho nastavit konfiguraci.

Nahoru Odpovědět 23.5.2013 14:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Milan Gallas
David Čápka:

Záleží jak na kódování v DB, tak na kódování samotných souborů v PHP aplikaci, hlavičce stránek a podobně. Chyba může být na mnoha místech, psal jsem ti, ať si to zprovozníš pod UTF-8 alespoň v adminovi, abychom se měli od čeho odpíchnout. Pravděpodobně máš i samotná data špatně a to enspraví že v DB něco přepneš, musíš je nahrát znovu.

Nahoru Odpovědět 23.5.2013 14:03
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
Milan Gallas
Redaktor
Avatar
Milan Gallas:

data sem nahrával z Excelu a když sem nahrával data nastavil jsem je na windows-1250

 
Nahoru Odpovědět 23.5.2013 14:14
Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

takže všuda mám nastaveno kodovani windows a nic

 
Nahoru Odpovědět 23.5.2013 14:14
Avatar
Kit
Redaktor
Avatar
Odpovídá na Milan Gallas
Kit:

Zřejmě nemáš. Zkusil jsi tam ta data nahrát znovu se správným kódováním? Co kdybys to celé udělal znovu kompletně s UTF-8?

Editováno 23.5.2013 14:23
Nahoru Odpovědět 23.5.2013 14:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Gallas
Redaktor
Avatar
Odpovídá na Kit
Milan Gallas:

zkusím to předělat a pak napíšu díky.

 
Nahoru Odpovědět 23.5.2013 15:02
Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

celé to mám v utf8:
mb_internal_en­coding("UTF-8");
PDO::MYSQL_AT­TR_INIT_COMMAND => "SET NAMES utf8"
a porovnání utf8_czech_ci (ani bez toho mi to nejde)

ale už mi to nevipisuje ani čárky a žádné háčky prostě nic utf8 mi nefunguje .

 
Nahoru Odpovědět 24.5.2013 9:59
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Milan Gallas
David Čápka:

Již potřetí se tě ptám, jestli to máš v pořádku v Adminovi. Pokud nechceš pomoct, nevím, proč píšeš na forum. Na kódování Windows zapomeň, to už jsem ti také psal.

Nahoru Odpovědět 24.5.2013 10:05
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
Kit
Redaktor
Avatar
Odpovídá na Milan Gallas
Kit:

Tak to máš nějaké divné. Nahrál jsi data do DB znovu?

Nahoru Odpovědět 24.5.2013 10:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Milan Gallas
Redaktor
Avatar
Milan Gallas:

jo mimochodem sem na adminovi a mam to ok data sem nahral znovu, chci pomoct. ale utf8 mi proste nejde uplně to zdeformuje data chapete a kdyz tam mam windows tak to nepíše pouze ř a č a píše místo nich otazníky.

 
Nahoru Odpovědět 24.5.2013 10:15
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Milan Gallas
David Čápka:

Že ti to zdeformuje pouze něco neznamená, že je to lepší, je to ten samý problém. Mám to ok mv adminovi znamená co? Vidíš v PHPMyAdmin nebo jiném nástroji co používáš pro správu databáze diakritiku v datech normálně, když si data zobrazíš? Pokud ano, máš z poloviny vyhráno, protože databáze je v pořádku. Je tedy problém na straně aplikace. Máš tam HTML hlavičku s UTF-8? A soubor je také v UTF-8?

Nahoru Odpovědět 24.5.2013 10:17
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
Зайчик
Člen
Avatar
Odpovídá na David Čápka
Зайчик:

mám úplně stejný problém :D

na straně databáze je vše v pořádku pokud přidám data přes phpmyadmina tak "ěščřžýáíé" naprosto v pořádku, ale pokud to přidám přes aplikaci... výstup je"Ä?Å?žýáÃÃ" :D

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Celý projekt jede na UTF-8 databáze taktéž soubory jsou také úložené v kódování UTF-8. Sakra už fakt nevím kde by mohl být problém. :(

Nahoru Odpovědět 24.5.2013 13:29
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Vypádá to, jako kdybys původní UTF-8 překódovával z domnělého cp1250 na UTF-8. Druhou (zbytečnou) transformací se to takhle rozhodí.

Nahoru Odpovědět 24.5.2013 13:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

já všechny data smazal z cp1250 jsem předělal na utf8 a data nahrál a vzniklo tohle :D

Nahoru Odpovědět 24.5.2013 13:43
Коммунизм для нашего будущего!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

Pokud to tam nahráváš přes webový formulář, tak ten to interně překódovává podle znakové sady webu. Tedy pokud tu stránku máš v UTF-8, tak i když do textarea napíšeš text v cp1250, je před přenosem na server překódován do UTF-8. Vkládej tam tedy takový text, který pro tebe bude čitelný.

Nahoru Odpovědět 24.5.2013 13:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Kit
Зайчик:

To jsem teda moc nepochopil, pokud mám databázi v UTF-8 a celý web page mam taky v UTF-8 a posílám to přes formulář do kterého píšu (ěščřžý) tak se to v UTF-8 i odešle na server podle toho co říkáš. V tom případě absolutně nevím kde je chyba protože db je v UTF 8 je v pořádku aplikace,celý projekt a všechny page v něm je v kódování UTF-8 nevím proč mi tedy do DB posílá nesmysli. Příjde mi že mam všechno v pořádku :D i když je něco absolutně špatně kámoš říkal že to dělá netbeans že to celé kóduje ve windows1250 i když jsem celý projekt v properties překódoval na UTF8? Jinak fakt už nevím kde je zrada

Nahoru Odpovědět 24.5.2013 13:57
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:

Netbeans určitě nic nekóduje v CP1250.

Nahoru Odpovědět 24.5.2013 14:46
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
Milan Gallas
Redaktor
Avatar
Milan Gallas:

přikládám soubor prosím o radu:

databáze: CREATE TABLE obedy (id INT UNSIGNED AUTO INCREMENT,
polevka TEXT, menu1 TEXT, menu2 TEXT, datum TINYTEXT)

 
Nahoru Odpovědět 24.5.2013 20:26
Avatar
Kit
Redaktor
Avatar
Odpovídá na Milan Gallas
Kit:

Soubor index.php je v cp1250, polevky se vloží špatně.

Nahoru Odpovědět 25.5.2013 10:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 27 zpráv z 27.