Máte problémy s kódováním při převodu svého fóra na phpBB3?
Máte problémy s exportem a importem svých dat fóra?
Špatně se vám zobrazuje diakritika v databázi za pomoci phpMyAdminu?
Přečtěte si tento návod.
Obsah
- Kódování znaků
- Korekce kódování
- Databáze a tabulky
- Kontrola fóra
- Nastavení jazykových souborů
- Závěr
Nejdříve se podívejme na to, co všechno ovlivňuje kódování diakritiky mezi zobrazenou stránkou a řádkou v tabulce.
- Kódování stránek je určováno pomocí meta tagu
Kód: Vybrat vše
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
- Kódování pro připojení k databázi je nastavováno přímo v PHP.INI nebo je možné jej změnit v rámci připojení phpBB.
php.iniToto se nastavuje přímo při vytváření připojení k databázi. Typ připojení jste zadávali při instalaci. Pokud si jej nepamatujete, naleznete jej v config.php v proměnné $dbms.Kód: Vybrat vše
default_charset = "iso-8859-1"
Změna je prováděna ve funkci sql_db, a to vykonámím příkazu:Tento příkaz je vhodné provádět až po připojení k databázi a vybrání příslušné databáze. Nejvhodnější je vložit až těsně před ukončení provádění této funkce:Kód: Vybrat vše
mysql_query( "SET NAMES utf8");
Kód: Vybrat vše
mysql_query( "SET NAMES latin2"); return $this->db_connect_id;
- Kódování databázového serveru naleznete přímo na hlavní stránce phpMyAdmina pod odkazem Systémové proměnné MySQL. Jedná se o nastavení těchto hodnot:
- character set client
- (Globální hodnota)
- character set connection
- (Globální hodnota)
- character set database
- character set filesystem
- character set results
- (Globální hodnota)
- character set server
- character set system
- collation connection
- (Globální hodnota)
- collation database
- collation server
- Kódování tabulek a jednotlivých textvových sloupců tabulek. Tato nastavení naleznete přímo v seznamu tabulek nebo v náhledu struktury tabulky.
0) Než začnete
Nainstalujte si lokálně web server, MySQL, PHP a phpMyAdmina; nejlépe pomocí nějakého balíku, který obsahuje webserver, mySQL a PHP.
1) Oprava kódování v databázi a tabulkách
Vytvořte si databázi, do které budete nahrávat vyexportovaná data, a nastavte jí správné kódování. Nejvodnější kódování bude UTF-8.
Jděte do administrace svého fóra a vyexportuje si strukturu databáze; nejlépe bez informací o nastavení collation a default charset. Následně ji naimportujte do své lokální databáze na lokálním stroji.
Nyní si stáhněte přiložený soubor, který Vám vyexportuje všechna data z Vašeho fóra.
sql_dump.php (zip soubor)
Nahrajte jej do hlavního adresáše fóra.
Přejděte v prohlížeči na domovskou stránku vašeho fóra a nahradtě v adrese index.php za sql_dump.php, program Vám vyexportuje všechna vaše data do souboru, tabulky pro vyhledávání nejsou exportovány.
Vyexportovaný soubor by měl být v kódování UTF-8. Prohlédněte jej v nějakém editoru, který umí zobrazit soubor v kódování UTF-8. Měli byste vidět diakritiku správně.
V souboru byste měli mít vyexportovaná data se správnou diakritikou.V případě že kódování diakritiky není správné, nastavte v souboru sql_dump.php stejné kódování, jako je kódování tabulek a položek v tabulkách, a proveďte sql_dump.php znovu.
Příklady:Kód: Vybrat vše
header('Content-Encoding: latin2'); header('Content-Encoding: iso-8859-2'); header('Content-Encoding: utf-8');
Nyní naimportujte výsledný vyexportovaný soubor do databáze.
- Pomocí phpMyAdmina si poté prohlédněte naimportovaná data, zdali se správně zobrazuje diakritika. Pokud se diakritika správně nezobrazuje, vymažte všechny záznamy z tabulek.
- Pomocí příkazového řádku:Opět zkontrolujte správnost diakritiky pomocí phpMyAdmina.
Kód: Vybrat vše
mysql -h localhost -u [uživatel] -p[heslo] [databáze] --default-character-set=[kódování diakritiky v souboru] < [vyexportovaný soubor]
2) Kontrola fóra
Nyní zprovozníme vaše fórum lokálně.
Zkopírujte si své fórum z FTP lokálně do adresáře webového serveru. Upravte config.php, kde přepíšete hodnoty pro připojení do DB.
Kód: Vybrat vše
$dbhost = 'localhost';
$dbname = '[databáze]';
$dbuser = '[uživatel]';
$dbpasswd = '[heslo]';
Smažte obsah složky cache.
Otevřete v phpMyAdminu tabulku phpbb_config. Najdete řádky s server_name a script_path. Server_name nastavte na localhost a script_path nastavte absolutní cestu ke skriptům od kořene webu.
Nyní byste měli mít lokálně funkční fórum se správnou diakritikou v DB.
V jazykových souborech nastavte správné kódování, stejné jako je kódování v DB (UTF-8).
Kód: Vybrat vše
$lang['ENCODING'] = 'utf-8';
Pokud nejsou zobrazeny správně české znaky, je nutné opět nastavit správné kódování pro připojení k DB.
Kód: Vybrat vše
mysql_query( "SET NAMES utf8");
return $this->db_connect_id;
3) Kódování jazykových souborůPokud nejsou, měli byste začít znova s jiným nastavením kódování.
Stáhněte si správné jazykové soubory ve správném kódování a nahrajte je do příslušných adresářů fóra. Slaďte kódování všech jazyků; pokud jen jeden jazyk bude v jiném kódování, ostatní uživatelé používající jiný jazyk nebudou mít správně zobrazenou diakritiku.
4) Závěr
Naučte se celý postup tak, abyste jej mohli provést bezchybně a automaticky.
Poté jej budete moci provést přímo na vašem fóru uloženém na hostingu.
Až jej budete převádět "naostro", nebudete měnit hodnoty v DB ani v config.php
Doporučení
Až budete vytvářet tabulky na svém hostingu, upravte nejdříve soubory se strukturou DB a daty.
Nahraďte phpbb_ třeba za phpbb2_.
Poté vše naimportujte, zkontrolujte diakritiku v DB, upravte jazykové soubory a posléze v config.php změňte
Kód: Vybrat vše
# -- NAJDI
$table_prefix = 'phpbb_';
# -- NAHRAD
$table_prefix = 'phpbb2_';
Od této chvíle by vám mělo fórum běžet na nových tabulkách.