Autor Zpráva
l4ci
Profil
Ahoj,
mam databazi nad mysql s tabulema v collation latin2_czech_cs a data v nich jsou jednak ceske znaky ale take numericke html entity, jako napr. Š nebo ' predstavujici pismena ruznych jazyku, nejen cestiny. Vsechny tabule bych chtel zkonvertovat do UTF-8 vcetne numerickych entit na sve znakove protejsky. Uvazoval jsem ze bych exportnul celou DB a projel ji nejakym nastrojem ktery spravne zkoncertuje HTML entity, nic se mi ale nepodarilo najit, mozna budete znat snadnejsi reseni?

Diky,
David.
Martin Snížek
Profil
Já myslím, že to nemusíte ani exportovat. Stačí změnit kódování tabulek v administraci DB a pak si to nechat projet třeba nějakým jednoduchým skriptem v PHP - využít se dá toho, že numerické entity vyjadřují vždy číslo znaku ve znakové sadě ISO 106 46 (v podstatě stejné jako kódování UTF-8).
l4ci
Profil
Bohuzel to tak jednoduche neni, zkousel jsem na jedne z tabuli konvertnout na UTF-8 a na vystup z PHP sly pouze otazniky misto ceskych znaku ktere nebyly numericke entity.
A html entity jsem zkousel pomoci PHP zkonvertovat snad stovkou ruznych skriptu z php.net a dalsich zdroji, bohuzel bezvysledne.
martin hu
Profil *
dobrý den, potřebuji také v phpmyadmin změnit tabulky v databázi z latin2 na utf8, ale jsem v tomto totální amatér. poraďte prosím vás s řešením. mám hosting na blueboard.cz.

problém je: latin2 mám v databázi a utf8 v souborech nové verze wordpressu. když použiji latin2, tak se diakritika na vlastním webu zobrazuje správně, ale nefunguje admin rozhraní (lze se přihlásit do systému, ale nemohu publikovat ani nic jiného), naopak s utf8 funguje admin, ale diakritika na stránkách ne. jak to sladím netuším.
Kajman_
Profil *
Zkusil bych najít ve skriptu wp connect a po něm zavolat mnohokráte zde zmiňované set names.
martin hu
Profil *
to jsem snad již dříve udělal (vložil jsem řádek) - a nic, viz.:

function wpdb($dbuser, $dbpassword, $dbname, $dbhost) {
$this->dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);
@mysql_query ("SET NAMES utf8_general_ci;", $this->dbh);
if (!$this->dbh) {
$this->bail("

dále ve skriptu se vyskytuje:

@mysql_query('SET CHARACTER SET latin2_general_ci', $this->dbh);
@mysql_query('SET character_set_results=latin2_general_ci', $this->dbh);
@mysql_query('SET character_set_connection=latin2_general_ci', $this->dbh);
@mysql_query('SET character_set_client=latin2_general_ci', $this->dbh);

- zde kdyz nahradim latin2 za utf8, tak mi pujde administrace, ale ne diakritika na webu..
Kajman_
Profil *
@mysql_query ("SET NAMES utf8", $this->dbh);
martin hu
Profil *
@mysql_query ("SET NAMES utf8", $this->dbh); - při tomto nastavení jede admin luxusně, ale češtinu na webu to rozloží..

pokud místo utf8 v set names použiji utf8_general_ci nebo třeba utf8_czech_ci, pak je situace stejná jako v latin2_general_ci - tz., že čeština na webu je ok, ale admin nepoužitelný.

začínám propadat pláči :) kajmane, děkuji za pomoc!
Kajman_
Profil *
No, tak se tam asi musí udělat podmínka na to, zda je to web nebo administrace.

Podívejte se, v jakém kódování stránky vypadávají. Buď to sjednoťte nebo nastavte
set names utf8
či
set names latin2
podle toho, zda je to administrace nebo ne.

A utf8_general_ci nejde použít v set names, protože to je porovnání a ne kódová stránka! Proto se to nenastaví a zůstane to výchozí podle nastavení serveru.
martin hu
Profil *
jedná se o stránky www.whitebox.cz - index.php má ve zdrojovém kódu v meta:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

to samé je i ve zdrojáku wp-login.php - stránce, kde se přihlašuje do administrace
Toto téma je uzamčeno. Odpověď nelze zaslat.