Здравствуйте. WinXP, Apache2, MySQL - 5.0.19-nt, PHP 5.1.2 Устанавливаю phpBB (v2.0.20). Русская верися форума в кодировке windows-1251, а мне его нужно установить в utf-8 по причине многоязычности форума. Сами файлы phpBB немного пришлось подкоректировать (поставить нужную кодировку) и собственно перекодировать их в utf-8. База данных соответственно тоже была создана в utf-8 и collation utf8_unicode_ci. На первый взгляд после установки все работало просто отлично. и русский и более экзотичные языки отображались на форуме без всяких проблем. Но потом, просмотревши базу данных форума в phpMyAdmin я увидел, что нелатинские символы отображаются неправильно (абракадабра), но при этом всем форум работает отлично. Первыми действиями было в скрипте соединения с базой данных поставить mysql_query("SET NAMES utf8"); После переустановки форума захожу в phpMyAdmin - все стало отображаться правильно. Но появилась проблема: при регистрации нового пользователя с нелатинским ником форум мне выдает что такой пользователь уже существует. Но в тоже время если убрать строку mysql_query("SET NAMES utf8"); форум начинает работать нормально... Один человек мне сказал, что это типа phpMyAdmin неправильный, что он с юникодом работать не может. Вот меня и интересует вопрос что работает не правильно? Заранее спасибо за ваши мнения!
Только что попробал установить форум на сервере провайдера со строкой mysql_query("SET NAMES utf8"); пашет на ура. Значит это зависит от настроек сервера... Что нетак? провайдер: FreeBSD, Apache 1.33 , PHP 4.3.11, MySQL 4.1.11
Проблема этого чертового форума остается нерешенной: русский ник пользователя обрезается вдвое. но теперь это делает не база данных. Тоесть это делает сам php. насколько я понял проблема кроется в строковых функциях, которые не коректно работают с юникодом. Пробовал в htaccess писать строку "php_value mbstring.func_overload 6" и "php_value mbstring.func_overload 7". Но это привело к тому что во время регистрация русского пользователя форум выдает что такое пользователь уже есть... Уважаемые специалисты, помогите пожалуйста. У меня уже сил нет бороться с этим чертовым юникодом и phpBB!!
Danilevsky лично мне разбираться с этим phpBB нету ни желания ни сил. ты уж прости ... в чем другом помогу с удовольствием. p.s. есть официальный форум поддержки этого продукта. надо поднять этот вопрос там, т.к. там есть техподдержка.
Всему виной б..ть эти йо....ые строки: PHP: function phpbb_clean_username($username) { $username = substr(htmlspecialchars(str_replace("\'", "'", trim($username))), 0, 25); $username = phpbb_rtrim($username, "\\"); $username = str_replace("'", "\'", $username); return $username; } function phpbb_rtrim($str, $charlist = false) { if ($charlist === false) { return rtrim($str); } $php_version = explode('.', PHP_VERSION); // php version < 4.1.0 if ((int) $php_version[0] < 4 || ((int) $php_version[0] == 4 && (int) $php_version[1] < 1)) { while ($str{strlen($str)-1} == $charlist) { $str = substr($str, 0, strlen($str)-1); } } else { $str = rtrim($str, $charlist); } return $str; }