Téma: Přechod na PunBB 1.3 z nižších verzí - chybné zobrazení znaků v MySQL
Pokud máte standardně nastavenou databázi MySQL na porovnání latin1_swedish_ci je dosti pravděpodobné, že bude s přechodem na verzi 1.3 problém.
Nyní jak postupovat:
Proveďte aktualizaci PunBB (Windows 1250) obdobně jak je uvedeno zde až do bodu číslo 5.
Nyní zadejte do Enable conversion "cp1252"
Proveďte upgrade databáze MySQL
Prostřednictvím phpMyAdmina se přihlaste (se znakovou sadou UTF-8) a zkontrolujte, zda je všude (tabulky i sloupce) nastaveno porovnání utf8_general_ci (případně utf8_czech_ci pokud chcete české řazení znaků). Pokun není, nastavte.
Stáhněte si náš soubor cp1252toutf8.php a nahrajte ho do kořenového adresáře.
Spusťte tento soubor prostřednictvím prohlížeče (HTTP protokolu) a vyčkejte na úpravy, které provede
Nyní by měla být vše kromě základního nastavení fóra převedeno do češtiny. Soubor cp1252toutf8.php smažte.
Kód souboru cp1252toutf8.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Převod znaků v PunBB</title>
</head>
<body>
<?php
include ("config.php");
function trans($s)
{
static $tbl = array("ø"=>"ř","Ø"=>"Ř","ù"=>"ů","è"=>"č","È"=>"Č","ì"=>"ě","ò"=>"ň",""=>"ť","ï"=>"ď","¾"=>"ľ","Ï"=>"Ď");
return strtr($s, $tbl);
}
$db = mysql_connect("$db_host","$db_username","$db_password") or die ("Nemohu otevřít databázi.");
mysql_query("SET NAMES 'utf8';");
mysql_select_db ("$db_name") or die (mysql_error());
echo "Převod znaků zahájen...<br>";
echo "Tato operace může trvat i několik minut - záleží na velisti databáze.<br><br>";
$result = mysql_query ("SELECT id,message FROM ".$db_prefix."posts");
while ($data = mysql_fetch_array ($result))
{
$postid = $data['id'];
$post = $data['message'];
$post = trans($post);
mysql_query ("UPDATE ".$db_prefix."posts SET message='$post' WHERE id='$postid'");
}
echo "Úprava příspěvků provedena...<br>";
$result2 = mysql_query ("SELECT id,subject FROM ".$db_prefix."topics");
while ($data2 = mysql_fetch_array ($result2))
{
$topid = $data2['id'];
$sub = $data2['subject'];
$sub = trans($sub);
mysql_query ("UPDATE ".$db_prefix."topics SET subject='$sub' WHERE id='$topid'");
}
echo "Úprava témat provedena...<br>";
$result3 = mysql_query ("SELECT id,signature FROM ".$db_prefix."users");
while ($data3 = mysql_fetch_array ($result3))
{
$uid = $data3['id'];
$sig = $data3['signature'];
$sig = trans($sig);
mysql_query ("UPDATE ".$db_prefix."users SET signature='$sig' WHERE id='$uid'");
}
echo "Úprava podpisů provedena...<br>";
$result4 = mysql_query ("SELECT id,word FROM ".$db_prefix."search_words");
while ($data4 = mysql_fetch_array ($result4))
{
$swid = $data4['id'];
$sword = $data4['word'];
$sword = trans($sword);
mysql_query ("UPDATE ".$db_prefix."search_words SET word='$sword' WHERE id='$swid'");
}
echo "Úprava hledaných slov provedena...<br>";
$result4 = mysql_query ("SELECT id,cat_name FROM ".$db_prefix."categories");
while ($data4 = mysql_fetch_array ($result4))
{
$cid = $data4['id'];
$cn = $data4['cat_name'];
$cn = trans($cn);
mysql_query ("UPDATE ".$db_prefix."categories SET cat_name='$cn' WHERE id='$cid'");
}
echo "Úprava kategorií provedena...<br>";
$result5 = mysql_query ("SELECT id,forum_name,forum_desc FROM ".$db_prefix."forums");
while ($data5 = mysql_fetch_array ($result5))
{
$fid = $data5['id'];
$fname = $data5['forum_name'];
$fname = trans($fname);
$fdesc = $data5['forum_desc'];
$fdesc = trans($fdesc);
mysql_query ("UPDATE ".$db_prefix."forums SET forum_name='$fname',forum_desc='$fdesc' WHERE id='$fid'");
}
echo "Úprava fór provedena...<br>";
echo "<strong>Hotovo</strong>";
?>
<p><a href="http://punbb.er.cz/">Více informací lze nalézt na stránkách české podpory PunBB (punbb.er.cz)</a></p>
</body>
</html>
Funkci trans lze upravit dle znaků, které jsou zobrazeny po updatu ve Vaší databázi.