

Špatné kódování v databázi MySQL
Ahoj,
nemohu přijít na to, co dělám blbě.
Z formuláře ukládám data. Soubory php mají kódování utf-8. V meta tagu je rovněž utf-8. Celá databáze má porovnání utf8_czech_ci, tabulka je
CREATE TABLE IF NOT EXISTS `tkosp_akce` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datum` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`krajakce` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`poradatelakce` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`mestoakce` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`adresaakce` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`datumakce` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`casakce` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`nazevakce` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`popisakce` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`vstupne` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
`webakce` text CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=1 ;
a uloží se mi to takto
Když to načítám, načte se to dobře
Jenže nejde vyhledávat a editovat přímo v phpmyadminu, jelikož se to potom zobrazí špatně.
Co dělám blbě?
To "uloží se mi to takto" vidíš kde? V PHPMyAdmin? Pak ten PHPMyAdmin není nastavený, aby pracoval v UTF-8 a zobrazuje ti to špatně on. Uložené je to dobře, na první pohled jde o UTF-8
Jestli máš celou DB nastavenou v UTF-8, pak to nedělej u jednotlivých sloupců. Jen tím zbytečně přidáváš režii
Ano.
A to je právě to, co nechápu, jelikož si myslím, že to je v utf-8 (je to na Webuzdarma).
A koukal jsem tam (v phpmyadminu) teď na zdrojám a také tam je
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Treba je vse v poradku ale ty znaky nezvlada pouzity font.
Vždyť to je nějaká Verdana. Proč by měli na Webuzdarma nějaký exotický font?
Jo a na localhost mi to vlastně dělá také. Někde chybuji a netuším kde.
Font to zvlada nezvlada to asi ten program lebo to asi do neho programator nenaprogramoval.
Vseobecne ak to je nejaky stary neunicode program tak jeho zobrazovanie zavisi od nastavenia v ovl.panely - lokalne nastavenia, na poslednej karte font pre neunicode programy. Neviem jaka verzia toho programu vie co, ja s mysql nerobim vobec. Ale ako uz bolo pisane mas tam jasne ulozene UTF-8 znaky a hlupy zobrazovaci program ktory to nechape a zobrazuje ascii. Takze to vpodstate ani nemusis riesit ptz v db je to tak ako si chcel.
PHPMyAdmin je webove rozhrani k admistraci databaze. Tam ti ovladaci panely nepomohou.
Ja neviem v com si to pozera, ked to je webove tak to je bud blbo na tom webu (napr. nedava to spravnu hlavicku html alebo ine chyby) alebo je blbo nastaveny prehliadac.
.. podla toho co pise dole citatel je to teda asi blbo na tom webu...
Je to presne naopak ako píšeš. Phpmyadmin je v poriadku, ale uložené je to zle.
Jedine čo mu pomôže, je spraviť si malý php skript na konveziu.
1. vytvoriť dva konekty do db, jeden pôvodný, druhý so správne nastaveným charsetom
2. načítať dáta, a uložiť ich naspäť cez druhý konekt
prípadne si sprav duplikát tabuľky, a otestuj si to tam, keď to dobre dopadne, tak len prehodíš tabuľky.
Proc si myslis, ze je to ulozene spatne? To zobrazeni odpovida fyzicky ulozenemu UTF-8. Jen to PHPMyAdmin nezobrazí správně.
Navíc webová stránka mu to správně zobrazí.
Také mi to přijde, že je PHPMyAdmin nějak divně nastaven. Ale vůbec netuším, kde co nastavovat. Ještě schválně zkusím přehodit kódování "porovnání pro toto spojení".
Osobne bych vyhodil vsechny UTF8_czech a to vcetne sloupecku v tabulkach.
Nechal bych pouze UTF8 na urovni DB.
Tabulku jsem odstranil, udělal znovu, pouze takto
A stále stejné. Když vložím řádek přímo v PHPMyAdminu, je tam diakritika správně, ale zobrazuje se to špatně na webu.
A když vložím řádek přes formulář z webu, zobrazuje se to na webu správně a v PHPMyAdminu špatně.
Proste je ten tvoj MyPhpAdmin naprogramovany chybne. Jaku mas verziu mysql a toho adminu a janeviemcoho este?
Ja s tym nerobim ale treba googlit slova MyPhpAdmin utf8, napr. tuto nejaky mudruje (pod sekciou "Edit" v odpovedi 30) https://stackoverflow.com/questions/4777900/how-to -display-utf-8-characters-in-phpmyadmin
Ale treba si citat aj dalsie weby co najde googlr.
Znaky mas jasne ulozene spravne. UTF8 uklada specialne znaky ako 2bajty a to tam je vidiet ze to tak ulozene mas (2znaky namiesto 1 specialneho) takze ulozene to mas v UTF8 a blbo to zobrazuje ten zobrazovac, treba len prist na to ze z akeho dovodu.
Ale přeci nejsou ty PHOMyadminové oba špatní (u mě na local i na Webuzdarma). Něco budu dělat blbě já. Pročetl jsem toho už "tuny".
Nicméně, abych se ujistil, zkusím to dát i na Onebit.
Môže mi to byť jedno, akurát neviem či ste všetci retardovaní, ale hneď na začiatku som vám napísal čo je zle. Prečo to jednoducho neopravíš podľa návodu?
Ulozene to ma dobre ved to vidim ocami mojimi tuto na obrazku co dal ze tam ma UTF8 bajty.
Blbo nastaveny ma ten phpmyadmin. Alebo niekde nenastavene nejaky flag na UTF8, na ktory sa ten phpadmin kuka.
Ako myslíš.
Ty jsi na to kápl. Sice netuším jak to zprovoznit i na Webuzdarma, ale Onebit!
Na Webuzdarma mají verzi PHPMyadmina nějakou 3.5.8.1
Na localhost mám 4.0.4
Na Onebit je 4.6.6
Hoď si na local stejnou verzi, pak se vyvaruješ těmhle blbostem, který sou klidně i na pár hodin:)
S tím kódováním sem taky bojoval, charset, collation, meta, všecky hovadiny na utf8 a pak sem si nevšiml, že se mi uložil php, html nebo nějakej soubor v jiným kódování. Taky paráda:)
Netuším, jak zaktualizovat phpmyadmina ve wamp serveru. Zkusím poslední verzi wamp serveru. Vzpomínám, že kdysi jsem také s něčím podobným zápasil a bylo to právě wamp serverem. Starší verze mi to pak nedělala.
Muzes taky zkusit HeidiSQL, osobne pouzivam a maximalni spokojenost.
Už jen z názvu to bude asi jen databáze, ne? On používá i php, takže nějakou triádu.
Ze všech, co sem vyzkoušel, tak sem zůstal u XAMPP, ta je relativně aktuální, portable, přehledná, nezůstává běžet apache v servisce na pozadí, když to vypneš atp.
U wampu to bude asi stejný, uložíš si config.inc.php z phpmyadmina, smažeš celou starou verzi, hodíš novou a tam vložíš config.
No Krata chce ocividne klikaci nastroj na MySQL, tak jsem zminil HeidiSQL. Je to normalni SQL klient, ktery nema problemy s kodovanim, takze proto.
XAMPP nainstaluje SQLserver, PHP + Apache (+ muzes nainstalovat klikaci SQL webklient (tj phpMyAdmin)).
Můj připojovací soubor do db. Co je na něm špatně?
ten posledny riadok tam bol vzdy, alebo si ho teraz dopisal?
skus za to vsetko pridat jednoduchy insert s testovacim stringom. a potom si ho skontroluj v phpmyadmin.
Byl tam vždy.
Máš v ňom chybu..
Pozri si výsledok týchto príkazov:
Podľa výpisu by si mal vedieť povedať, čo máš nastavené zle.
Na webuzdarma píše
Proč tam je latin2?
Na Onebit píše
Protoze server je nakonfigurovany ve vychozim postaveni jako Latin2 a DB se pak vytvari podle vychoziho nastaveni serveru. Pri vytvareni DB musis specifikovat locale.
Opäť zle radíš. Problém nie je v db. Môže byť aj latin2
Samozrejme ze DB byt v latin 2, pak muzes mit tabulky v CP1250 a sloupce v UTF-8. Ale k cemu to cele povede?
Odbočením k absurdnosti sa snažíš zakryť svoje blbé rady? Jeho databáza nebola v latin2. Ukazoval to hneď na začiatku.
Blbe rady mas skor ty. Riesenie si nedodal, a pises dokazatelne nepravdy (uz v dotaze vidiet UTF8 bajty. Dekodovat na cisla si ich mozes podla tabulky ak mi neveris, ja to vidim zhlavy). A aj Jan to videl hned v 1.odpovedi.
(otazka je ze kam sa kuka ten phpmyadmin, ze si mysli ze ma zobrazpovat ascii a ne UTF8 ktore tam su skutocne ulozene)
Vidíš zle, ale okuliare ti v tomto nepomôžu.
Co vidim zle? www.utf8-chartable.de
á = c3 a1 = á
Ked to tam v tom vypise nevidis tak chod k ocnemu.
Vidíš, ale nechápeš. Už ma to nebaví.
Napísal som v čom je problém, ale kedže si myslíte že chyba je inde. Tak si ju hľadajte inde.
Kľudne si mysli, že máš pravdu. Môj problém to nie je.
Ja to chapem nechapes to ty. V databaze je C3 A1 a zobrazovac to zobrazi blbo lebo kdesi berie ze ma zobrazovat bajty po jednom (niektore ascii kodovanie to je jedno ktore)
To co si pisal nepomaha, viz nizsie. Resp. nepisal si konkretne riesenie ziadne.
P.S. Ked vies riesenie tak ho napis normalne a ne hrat sa na hadanky. Zatial si nenapisal konkretne fakty, len vety typu ze nikto nic nechape a ze treba googlit.
Toto je poradna, ne "hadankovna", kde se ma hledat jaky problem.
A ano to set names ma byt udajne s utf8 a ne utf-8
Kráťa sem dával výpis proměnných. Ukazuje mu to server i DB v Latin2. Proč?
Vím, že mu PHPMyAdmin ukazoval DB v UTF-8, ale nevím, proč mu výpis proměnných ukazuje, že má DB v Latin 2
Tento výpis si dostal, keď si spustil tie príkazy cez phpMyAdmin? Alebo si to spúšťal cez svoj PHP skript?
V phpMyadminu.
Skusil si uz to set names zmenit na utf8 namiesto utf-8 jak pisal citatel? (to len tak pomimo toho co pise los mozes vyskusat zatial)
To tam bylo zkraje dobre. Pomlcka vznikla az dnes rano.
Citatel nenapsal v cem je chyba, pouze, ze je chyba. Napsals to az ty.
A môžeš sem dať aj výstup, keď to spustíš zo svojho PHP skriptu?
Jo, dam, ale az budu doma u stroje (nejdrive k veceru).
Podarilo sa ti to spustiť priamo z tvojho PHP skriptu?
Děkuji ti za navedení. Stále mi vrtalo hlavou to latin2, které se mi po tvém příkazu vypsalo. Prozkoumal jsem bedlivě PHPMyadmina na Webuzdarma a našel tam porovnání na latin2. Tak jsem to přehodil a už to mám dobře i tam.
Tady značím za vyřešeno.
Ja viem presne kde máš chybu. Ale kedže ty to vieš lepšie, no tak reinštaluj a rekonfiguruj wamp a hľadaj chyby v phpmyadmine. Pretože chyba je vždy u druhých, všakáno?
No ty to víš, tak poraď. Já to nevím a nepíšu přeci, že je chyba u druhých. Stále se ptám, co dělám špatně. Teď jsem dal jinou verzi Wamp serveru a nedělá to. Záhada.
Proč bych měl mít dvě připojení k databázi netuším a ani nevím, jak to udělat (nebo jsem nepochopil, jak to myslíš).
Ja som ti to tam naznačil jasne, len ty hľadáš chybu inde, a všetci radcovia s tebou.
Takže by si mal to všetko zahodiť, a ísť od začiatku ešte raz.
Jasne som napísal, že to ukladáš zle. Chyba nie je v phpmyadmine.
A taktiež si skontroluj ten kúsok skriptu čo si nakoniec odtajil, a po kontrole tam pridaj tam ten jeden spomnaný insert.
phpmyadmin používaj ako kontrolu, ten pracuje na 100% v poriadku.
A takisto si pozri ten výpis premenných od losa, to je jediná rada k veci.
Ty výpisy jsem sem dal. Jak zrealizovat tvou radu nevím. A zrovna na Webuzdarma by se to hodilo, jelikož tam nebudu moci nic konfigurovat.
No veď ja som ti z nich povedal čo máš zle hneď. Až potom si ukázal ten kúsok skriptu, a tam vidím chybu.
Je bezva, ze vidis chybu. Avsak mnohem lepsi by bylo, napsat jakou. Pokud jde o tu pomlcku (utf-8), asi jsem ji napsal dnes rano, kdyz jsem zkousel windows 1250.
Predstav si, ze se budes na neco ptat ty a nekdo ti bude odpovidat ve stylu "mas tam chybu". To preci tazajici vi, ze je nekde chyba a proto se pta.
A nemám prísť ešte za tebou a dopísať ti ju tam? Toš pardon.
Proc bys mel nekam prist? Mame preci internet a tuto poradnu. Staci to napsat tady, jako to delaji jini, kteri chteji poradit.
No ako, je niečo nové? Pomohlo zmazanie pomlčky? Alebo to ešte opravujú chudáci autori phpmyadmina?
Ta pomlčka tam byla jen asi hodinu, jak jsem s tím ten den ráno experimentoval. Nové je to, že na localhost to mám OK po instalaci nové verxze Wampu. Na hostingu u Onebit to je také OK. Ale na hostingu Webuzdarma to je "čínský čaj" a zrovna tam, bych to potřeboval. Asi dám ten formulář na Onebit, na Webuzdarma to dám do iframe a bude.
Čo znamená, že inde je to OK? Prenesieš dáta z webzdarma (export import) a je to OK? Alebo to na každom hostingu vypĺňaš nanovo cez svoju aplikáciu?
S tou pomlčkou sa určite mýliš, alebo ju máš nastavenú niekde inde. Sprav si testovací skript, connect/insert a skúšaj ním vkladať údaje do tej problémovej tabuľky. Zatiaľ si nemal žiadnu snahu riešiť problém..
Omlouvám se, že jsou mé telepatické schopnosti mizerné natolik, že ti nevidím do hlavy, jak myslíš ono connect/insert. Kdybys chtěl poradit, věřím tomu, že bys sem ten kousek scriptu "connect/insert", kterým se má cosi řešit napsal.
Kdybych neměl snahu to řešit, tak bych to neřešil a nepsal dotaz do poradny. Kdybych věděl jak to řešit a řešil to, rovněž bych nepsal dotaz.
Nemám žádnou aplikaci. Mám pouze HTML formulář a v PHP jeho zpracování.
Co znamená, že je to jinde OK, je tady http://pc.poradna.net/q/view/1718109-spatne-kodova ni-v-databazi-mysql?page=r1718401#r1718401 (porovnej s původním dotazem).