Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: qaculda 24 Února 2008, 13:14:52
-
Snažím se všude používat UTF-8, čili databáze jsou v UTF-8, php je v UTF-8, ale přesto, když něco uložím přes rozhraní phpMyAdmin(stránka i rám jsou stále v kódování UTF-8), ve výsledku se pak ukáže něco jiného:
P?�li� �lo?ou?k� k?? �p?l ?�belsk� �dy.Když jsem zkoušel zadávat do MySQL přes terminál nebo php, tak je všechno v pořádku, ale v phpMyAdmin se zobrazuje
PÅ™ÃliÅ¡ žluÅ¥ouÄký kůň úpÄ›l Äábelské ódy.Tady je pár proměnných, které se toho týkají(položka 'Systémové proměnné MySQL' v phpMyAdmin)
character set client utf8
(Globální hodnota) latin1
character set connection utf8
(Globální hodnota) latin1
character set database latin1
character set filesystem binary
character set results utf8
(Globální hodnota) latin1
character set server latin1
character set system utf8
collation connection utf8_unicode_ci
(Globální hodnota) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_civerze php 5.2.3
verze MySQL 5.0.45
verze phpMyAdmin 2.10.3
Kde je zakopaný $this->pes()?
-
Konzole je v UTF8 a zobrazuje spravně, prohlížeč ne? Jestli to nebude třeba jenom tím prohlížečem.
-
konzola zobrazuje správně, prohlížeč(php kód čtoucí z databáze) taky zobrazuje správně, jenom v rozhraní phpMyAdmin je problém
-
nastaveni phpMyAdminu. tak jsem taky nekde videl nastaveni kodovani...
-
v phpMyAdminu je:
Jazyk: Česky - Czech
Porovnávání pro toto připojení utf8_czech_ci,
databáze utf8_czech_ci,
tabulky utf8_czech_ci,
porovnávání v tabulce utf8_czech_ci
Firefox hlásí kódování UTF-8 v celé stránce i v samotném rámu.
-
Mají tabulky MySQL opravdu nastavené porovnávání utf8?
-
opravdu
-
Takze:
insert into tabulka(jmeno) values('žížala');
zadaný z okna phmyadmina se zobrazi naslednym selectem spatne ?
-
v phpMyAdmin se zobrazí tak jak jsem zadal, ale ve stránkách se zobrazuje ��ala a v terminálu ���ala
-
v terminalu spustite v mysql clientu prikaz "set names to utf8" ? Mate OPRAVDU v terminalu znakovou sadu UTF? Jak mate nastavene kodovani v Apachu ? Direktiva default codepage, nebo tak nejak, nezabyvam se tim do hloubky.
-
příkaz 'set names to utf8;' hlásí syntax error near 'to utf8' at line 1, možná jsem jenom nepochopil, co mám dělat.
V apache jsem tuhle ani podobnou direktivu nenašel(těch konfiguráků je tam asi milion), ale našel jsem adresář /etc/apache2/conf.d, ve kterém je soubor charset.conf:
# Read the documentation before enabling AddDefaultCharset.
# In general, it is only a good idea if you know that all your files
# have this encoding. It will override any encoding given in the files
# in meta http-equiv or xml encoding tags.
#AddDefaultCharset UTF-8a link na /etc/phpmyadmin/apache.conf
-
Přidám svou trošku do mlýna. Dnes jsem byl postaven před úkol aktualizace webu. Řeklo by se banální záležitost, jenže když skoro každý řádek je jednotlivě uložen v databázi, na kterou musíte přes extrémně pomalý internet (nejpomalejší vytáčené připojení), tak je to horor. No a tam jsem měl ten problém, že phpMyAdmin nedokázal zobrazit správně diakritiku a (jako u ostatních), když jsem napsal třeba ř, na stránce pak byl vidět nesmyslný znak. Problém jsem nakonec vyřešil tak, že jsem to tam psal znaky, které se mi ukázaly v opačném převodu mezi kódováními (snad jsem to napsal dobře) - tudíž třeba ř jsem tam zapsal jako přeškrtnuté ok a pak vše bylo OK. Jenže pokud se jedná o dlouhé texty, tak je toto řešení nesmysl a také bych rád věděl, jak na to. Viděl jsem tam nějaké nastavení kódování, ale při testech na svém localhostu jsem zjistil, že tu diakritiku to na stránkách totálně dokoná, takže nedoporučuji měnit...
-
ten prikaz je presne: set names 'cp1250';
nebo: set names 'utf8';
Apache direktivu nevim, mozna poradi nekdo, kdo se tim zabyva.
To "set names" je zakladni vec, kterou musite udelat.
-
Změna nastala :). Teď terminál ukazuje totéž co phpMyAdmin, ale php ukazuje pořád něco jiného. Vybírám podstatné řádky ze zdrojáku:
<?xml version="1.0" encoding="UTF-8"?>
...
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
...
-
Ja na tom nic podstatneho nevidim, jsou to uvozovaci tagy nejakeho xml. O pripojeni k mysql tam neni nic. Tam se to kodovani musi nastavit !
-
Ok, tak jsem jenom myslel, že je to podstatné :)
Jak se tedy nastavuje kódování při připojení k mysql?
-
<?php
@mysql_query("SET NAMES CP1250");
?>Nejlepší je to použít hned po MySQL_Select_db.
-
Handl tam bejt nemusi ?
-
Skvělý!!!
Děkuju, všechno konečně funguje v tom kódování v kterým má. Přidávám potlesk.
-
Narazil jsem na následující problém. Kódování databáze mám na utf8, ale při prohlížení v konzoli mi to dělá takovouhle neplechu:
mysql> select * from evz_hartink;
+----+------------+-------------+
| id | vyrobce | model |
+----+------------+-------------+
| 1 | ?�?�??�?�� | ???�??�??�? |
| 2 | dd | ????�?? |
+----+------------+-------------+
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from evz_hartink;
+----+----------------------+------------------------+
| id | vyrobce | model |
+----+----------------------+------------------------+
| 1 | ěščšřčžřýí | řčřščřščřšč |
| 2 | dd | čěčěščě |
+----+----------------------+------------------------+
2 rows in set (0.00 sec)
neví někdo kde může být, že je to takhle rozhozený?