1

Тема: Перемешались кодировки в полях

Переносил базу форума smf с одного хостина на другой. Как обычно война с кодировками, но ее вроде как решил. База в cp1251_general_ci изначально была. Сейчас заметил, что некоторые буквы (например ш) поменялись на вопросик. Из-за этого, такие сообщения вообще перестали выводиться, пока в ручную, через phpMyAdmin не исправишь в нужном поле. Хотел написать простенький скрипт, который бы перебрал сообщения и по возможности исправил вопросики, но скрипт возращает такие битые строки абракадброй.

Скрипт, которым пытаюсь посмотреть таблицу.

MYSQL_CONNECT($hostname,$username,$password) OR DIE(mysql_error());

mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'"); 

mysql_select_db("$dbName") or die(mysql_error());

$query = "Select * FROM `smf_messages`";

$result = MYSQL_QUERY($query) or Die(mysql_error());

    while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
        print ($row["body"]."<br>");
    }

    mysql_free_result($result);
    
MYSQL_CLOSE()

Вопроса два:
1. Что можно сделать с данной проблеммой.
2. Из-за чего при переносе так строчки могло перекоряжить?

2

Re: Перемешались кодировки в полях

Hedge
Для подключения не используйте пользователя root. Создайте отдельного пользователя без привилегий в разделе "Администрирование".

/* Замените эти строки на одну, ниже.
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
*/
mysql_query('SET NAMES cp1251');

Вопросики в phpMyAdmin видны?
Обратите внимание на кодировку страницы скрипта.

Причину битых символов, сказать не могу. Только вы знаете что именно делали и при каких настройках серверов.

3 (изменено: Hedge, 2009-01-29 10:48:14)

Re: Перемешались кодировки в полях

Да, видны, причем не всё поле, а только несколько символов и из-за них скрипт выводит их криво.
Вот таблица http://www.audit-escort.ru/smf_messages.sql.zip , если у вас будет желание, гляньте, может появится идея, как можно битые строки вывести. Кодировка cp1251 таблицы. Биты поля в конце хорошо видны. Спасибо.