abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 2
včera 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 26
včera 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 8
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 14
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 25
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 15
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 5
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 1
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 774 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: PHP, MySQL a diakritika

David Watzke avatar 31.10.2009 16:28 David Watzke | skóre: 74 | blog: Blog... | Praha
PHP, MySQL a diakritika
Přečteno: 9023×
Zdravím. Načítám UTF-8 text z MySQL do HTML tagu textarea, kde jej lze upravit a pak uložit. Skript, který text ukládá do DB, dostane tento text v UTF-8 přes POST. Když si ho vypíšu, je OK, ale jakmile to uložím do DB, mám tam místo některých českých znaků (ě, ď a dalších) otazníky. Databáze je skutečně v UTF-8 a nastavuju kódování v DB pomocí SET CHARACTER SET utf8. Když se podívám jak to dělá phpMyAdmin, tak mi to vypisuje stejný příkaz, který spouštím já, ale stejně: phpMyAdmin funguje OK, můj skript ne. Nějaké nápady? Díky.

Ukládání vypadá nějak takhle:
$url = $_POST["url"];
$code = mb_ereg_replace("&", "&", $_POST["code"]);
// $code vypadá např. takto: "Nějaký UTF-8 text ..."

mysql_query("UPDATE `web` SET `code` = '$code' WHERE `web`.`url` = '$url' LIMIT 1;") or die(mysql_error());
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

Řešení dotazu:


Odpovědi

Víťa Šmíd avatar 31.10.2009 17:04 Víťa Šmíd | skóre: 41 | blog: vituv_blog | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Není možné, že v UTF-8 je databáze, ale už ne tabulka nebo dokonce sloupec? (MySQL to umí všechno nastavit zvlášť.)

Jak se to chová, když ekvivalentní UPDATE spustíš v CLI klientu?
When Chuck Norris plays Monopoly, it affects the actual world economy. | Matematika pro normální lidi
David Watzke avatar 31.10.2009 17:38 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
No, ta tabulka byla vytvořená v UTF-8... kódování u sloupců nikdo neměnil. Přes CLI klienta to zkusit nemůžu, nemám právo.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
31.10.2009 18:08 Petr Wiedemann
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Dobrý den, nepomohlo by?
set names utf8
David Watzke avatar 31.10.2009 18:17 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
zkusil jsem
	mysql_query("SET NAMES 'utf8'");
	mysql_query("SET COLLATION_CONNECTION='utf8_czech_ci'");
	mysql_query("SET character_set_client=utf8");
	mysql_query("SET character_set_connection=utf8");
	mysql_query("SET character_set_results=utf8");
	ini_set( 'default_charset', 'UTF-8' );
a nic z toho nepomohlo
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
31.10.2009 22:25 Petr Wiedemann
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Napadá mě ještě, jestli nedělá problémy mb_ereg_replace(). Je $code v UTF-8? Nepomohlo by pro jistotu zavolat:
mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");
Komentář z 3. února 2009 10:53 na http://us.php.net/manual/en/function.mb-ereg-replace.php
David Watzke avatar 31.10.2009 23:01 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Ne, ten problémy nedělá, s ním to nesouvisí. Zkoušel jsem tam strčit ten string napevno, aby nehrál roli POST ani nic jinýho.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
31.10.2009 18:53 razor | skóre: 32
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
z toho php bych si vypsal:
show create database nazev_databaze;
show create table nazev_tabulky;
show variables like '%char%';
Případně vydumpnout tabulku v binární podobě (asi to nějak jde i z phpmyadmina):
mysqldump databaze tabulka --default-character-set=binary

a ověřit, v jaké podobě tam jsou data skutečně uložený.

David Watzke avatar 1.11.2009 11:20 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
CREATE TABLE `web` (
 `url` varchar(128) collate utf8_czech_ci NOT NULL,
 `title` varchar(128) collate utf8_czech_ci NOT NULL,
 `code` varchar(10000) collate utf8_czech_ci NOT NULL,
 PRIMARY KEY  (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci COMMENT='html code'
character_set_client	utf8
character_set_connection	utf8
character_set_database	latin1
character_set_filesystem	binary
character_set_results	utf8
character_set_server	latin1
character_set_system	utf8
character_sets_dir	/usr/share/mysql/charsets/
DB je podle všeho latin1... tabulka je ale utf8...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
1.11.2009 13:42 razor | skóre: 32
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
No vypadá to, že by to mělo být v pořádku. Ještě doporučím vložit text např. "žluťoučký" a pak si to vypsat pomocí:
select hex(title) from web;
Pokud to vrátí: C5BE6C75C5A56F75C48D6BC3BD, tak je to v DB uloženo správně a problém neni při ukládání ale při prezentaci těch dat.
David Watzke avatar 1.11.2009 18:00 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
No, už v phpMyAdminu vidím, že v DB je to s otazníkama. Tzn. mám dobře kódovanej text v PHP stringu a do DB se uloží zmršenej, např takhle:
takový menší seznam v?cí, které bych aktuáln?
Myslím, že kdyby s tím pracoval jako s úplně jiným kódováním, zmršilo by se to víc a to je věc která mi vrtá hlavou...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
2.11.2009 10:44 impact | skóre: 11 | blog: _
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Skus vytvorit databazu znova s utf8 kodovanim. Nie som si isty ako to je v poslednej verzii MySQL, ale raz som vytvoril DB s kodovanim latin1, tabulky som nastavil na utf8 avsak nefungovalo to. Ked som znova vytvoril DB a nastavil pri vytvoreni celu DB na utf8, problem bol vyrieseny.
David Watzke avatar 2.11.2009 17:54 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Tohle podle mě nebude nutný, přes phpMyAdmina to jde v cajku :-/ Asi ho budu muset trochu prozkoumat. V nejhoršim bych si zkusil vyžádat to znovuvytvoření DB.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
multi avatar 2.11.2009 20:13 multi | skóre: 38 | blog: JaNejsemOdsut
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
mysql_query("SET CHARACTER SET utf8");

vyhral jsem?
svoboda je: když chci, tak můžu; kutilův web; bezdrátová čidla teploty vývoj softwaru
David Watzke avatar 2.11.2009 21:03 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Bohužel ne, tohle tam mám od samotnýho začátku, ještě než jsem začal řešit zápis do DB.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
3.11.2009 09:17 impact | skóre: 11 | blog: _
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika

Ak to funguje pod phpMyAdmin, tak mozno Tvoje PHP spojenie na MySQL nepouziva utf8. Skusim znova stastie, toto je clanok, ktory moze pomoct :

Unicode-friendly PHP and MySQL

mysql_set_charset - nastavuje charset pre mysql clienta

mysql_client_encoding - vracia charset pre mysql clienta (pre kontrolu)

David Watzke avatar 3.11.2009 22:58 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Děkuju. Nepomohlo mi sice nic z toho, co říkáš, ale dostals mě k řešení. mysql_set_charset() mi nejde, prostě dostanu prázdnou stránku v browseru... mysql_client_encoding() vrací latin1, ale dočetl jsem se, že to je docela zcestný. Řešením bylo před hodnotu napsat _utf8. Dočetl jsem se to v komentáři.
UPDATE `web` SET `code` = _utf8'$code' WHERE `web`.`url` = '$url' LIMIT 1;
Ještě jednou dík všem.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
3.11.2009 23:30 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
No řešení "hezké na zbláznění".
Osobně si myslím že se jedná o "provozní slepotu" -- sorry :).
(Přehlídnutí neprovádění se 'SET CHARACTER SET utf8')
Dal bych to pryč :).
A před SQL dotaz vložil.
SQL: 'SET CHARACTER SET utf8'
a nad začátek zpracování něco jako (pro jistotu):
if(!mb_internal_encoding("UTF-8"))
die ("FATAL ERROR");

něco jako:
if(!mb_internal_encoding("UTF-8")) 
  die ("FATAL ERROR, encoding");
$url = $_POST["url"];
$code = mb_ereg_replace("&", "&", $_POST["code"]);
// $code vypadá např. takto: "Nějaký UTF-8 text ..."
mysql_query("SET CHARACTER SET utf8") or die(mysql_error());
mysql_query("UPDATE `web` SET `code` = '$code' WHERE `web`.`url` = '$url' LIMIT 1;") or die(mysql_error());
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
David Watzke avatar 3.11.2009 23:39 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
To jsem ale už zkoušel. Provozní slepota ani ne, mám tam samozřejmě "or die()". Řešení to může bejt prasácký, ale jde o můj osobní web a mám to tam jen na jednom místě, takže je mi to vážně jedno a nemám valnej zájem o to ztrácet tím víc času. I když třeba budu rád, když časem přijdu na korektní řešení.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
3.11.2009 23:52 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Rozumím, ale i přes to mě ještě napadlo,
že by to mohlo být teoreticky ne-kontrolou nad spojením s DB
Tzn. použití fce mysql_pconnect() místo mysql_connect.
Asi bych si to spojeni uložil pro jistotu do promněné a předal ho dalším mysql_xxx fcím.
if(!mb_internal_encoding("UTF-8"))
  die ("FATAL ERROR 02");
$spojeni = mysql_connect(..);
mysql_query('SET CHARACTER SET utf8',$spojeni);
mysql_query("UPDATE .... '" . mysql_escape_string($code) . "' ....",$spojeni);
PS: aspoň mysql_escape_string by tam taky bodlo :)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
David Watzke avatar 4.11.2009 00:15 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
To je možný, používám pconnect.

PS: jojo, tohle jsem prve hledal když jsem to kdysi psal a pak jsem na to zapomněl... díky.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
15.3.2011 12:03 swed
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Ahoj, jen chci moc podekovat za toto reseni. Mel jsem stejny problem a byl z toho na prasky (kodovani vsude OK) prace s tabulkami OK, jen jedna tabulka delala otazniky misto nekterych znaku "č,..." Toto reseni se mi sice moc nelibi, ale bylo to jedine, co mi pomohlo. Jeste jednou moc dekuju:)
rou7 avatar 3.11.2009 19:38 rou7 | skóre: 12 | Kutná Hora
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Při výpisu do HTML stránky, která je kódovaná do utf8, je text vysypaný nebo OK?

Můžeš sem hodit PHP kód pro ukázku?
David Watzke avatar 3.11.2009 22:09 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Když vložím do DB utf8 text přes admina, při výpisu na utf8 stránku je to oki. Když tam vložím text sám přes PHP, tak jsou tam místo některých znaků otazníky. PHP kód čeho? Jednoduše získám utf8 řetězec přes proměnnou $POST a když ho pomocí PHP echo() vypíšu na utf8 stránku je OK, ale jakmile ho pomocí SQL příkazu update vložím do DB jako utf8, je z toho bordel.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
rou7 avatar 3.11.2009 23:03 rou7 | skóre: 12 | Kutná Hora
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Když vložím do DB utf8 text přes admina, při výpisu na utf8 stránku je to oki. Když tam vložím text sám přes PHP, tak jsou tam místo některých znaků otazníky. PHP kód čeho? Jednoduše získám utf8 řetězec přes proměnnou $POST a když ho pomocí PHP echo() vypíšu na utf8 stránku je OK, ale jakmile ho pomocí SQL příkazu update vložím do DB jako utf8, je z toho bordel.
... a při dalším výpisu na web je to OK nebo bordel?

pokud je to OK tak je špatně nastavený phpMyAdmin.
David Watzke avatar 3.11.2009 23:06 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PHP, MySQL a diakritika
Ne, na webu je z toho taky bordel, phpMyAdmin je nastavenej dobře. Jinak, už jsem to konečně vyřešil :-) Viz zde.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.