|
Żeby nie zgubić, opiszę wam co zrobiłem by przeżucić forum z phpbb by przemo do phpbb3, wcześniej znalazłem tę podpowiedź, ale do wersji 3.0.1, natomiast sam dostosowałem ją do 3.0.1, tak że nie pojawiają się krzaki, nie ma żadnych problemów ze znakami, nie wyświetlają się żadne pytajniki itd.
Sprawa polega na tym że funkcja: function phpbb_set_encoding znajdująca się w pliku: phpBB3\install\convertors\functions_phpbb20.php jest odpowiedzialna za zmianę kodowaniabazy danych... jednak w przypadku phpbb by przemo się myli poprawiając kodowanie...
żeby wszystko działo wporządku należy ją po prostu wyczyścić, czyli sprowadzić do postaci
function phpbb_set_encoding($text, $grab_user_lang = true)
{
return $text
}
normalnie w wersji phpbb 3.0.1 wygląda tak:
function phpbb_set_encoding($text, $grab_user_lang = true)
{
global $lang_enc_array, $convert_row;
global $convert, $phpEx;
/*static $lang_enc_array = array(
'korean' => 'euc-kr',
'serbian' => 'windows-1250',
'polish' => 'iso-8859-2',
'kurdish' => 'windows-1254',
'slovak' => 'Windows-1250',
'russian' => 'windows-1251',
'estonian' => 'iso-8859-4',
'chinese_simplified' => 'gb2312',
'macedonian' => 'windows-1251',
'azerbaijani' => 'UTF-8',
'romanian' => 'iso-8859-2',
'romanian_diacritice' => 'iso-8859-2',
'lithuanian' => 'windows-1257',
'turkish' => 'iso-8859-9',
'ukrainian' => 'windows-1251',
'japanese' => 'shift_jis',
'hungarian' => 'ISO-8859-2',
'romanian_no_diacritics' => 'iso-8859-2',
'mongolian' => 'UTF-8',
'slovenian' => 'windows-1250',
'bosnian' => 'windows-1250',
'czech' => 'Windows-1250',
'farsi' => 'Windows-1256',
'croatian' => 'windows-1250',
'greek' => 'iso-8859-7',
'russian_tu' => 'windows-1251',
'sakha' => 'UTF-8',
'serbian_cyrillic' => 'windows-1251',
'bulgarian' => 'windows-1251',
'chinese_traditional_taiwan' => 'big5',
'chinese_traditional' => 'big5',
'arabic' => 'windows-1256',
'hebrew' => 'WINDOWS-1255',
'thai' => 'windows-874',
//'chinese_traditional_taiwan' => 'utf-8' // custom modified, we may have to do an include :-(
);*/
if (empty($lang_enc_array))
{
$lang_enc_array = array();
}
$get_lang = trim(get_config_value('default_lang'));
// Do we need the users language encoding?
if ($grab_user_lang && !empty($convert_row))
{
if (!empty($convert_row['user_lang']))
{
$get_lang = trim($convert_row['user_lang']);
}
else if (!empty($convert_row['poster_id']))
{
global $src_db, $same_db;
if ($convert->mysql_convert && $same_db)
{
$src_db->sql_query("SET NAMES 'binary'");
}
$sql = 'SELECT user_lang
FROM ' . $convert->src_table_prefix . 'users
WHERE user_id = ' . (int) $convert_row['poster_id'];
$result = $src_db->sql_query($sql);
$get_lang = (string) $src_db->sql_fetchfield('user_lang');
$src_db->sql_freeresult($result);
if ($convert->mysql_convert && $same_db)
{
$src_db->sql_query("SET NAMES 'utf8'");
}
$get_lang = (!trim($get_lang)) ? trim(get_config_value('default_lang')) : trim($get_lang);
}
}
if (!isset($lang_enc_array[$get_lang]))
{
$filename = $convert->options['forum_path'] . '/language/lang_' . $get_lang . '/lang_main.' . $phpEx;
if (!file_exists($filename))
{
$get_lang = trim(get_config_value('default_lang'));
}
if (!isset($lang_enc_array[$get_lang]))
{
include($convert->options['forum_path'] . '/language/lang_' . $get_lang . '/lang_main.' . $phpEx);
$lang_enc_array[$get_lang] = $lang['ENCODING'];
unset($lang);
}
}
$encoding = $lang_enc_array[$get_lang];
return utf8_recode($text, $lang_enc_array[$get_lang]);
}
Pozdrawiam i życzę miłego używania phpbb3 :)
|