1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Перекодировка базы: windows1251 -> UTF-8, как?

Тема в разделе "Переезд на XenForo c других движков", создана пользователем Pavel, 06.10.2010.

Загрузка
  1. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Замечательный продукт cделали авторы этого движка, я имею ввиду не только этот форум, но и vBulletin. Замечательный он тем, что скрипт сам установил форум, организовал базу форума и работал, пока не вырос с локаоьного хоста до размеров сервера, при этом хозяин форума даже и не задумывался о том как это всё работает. В тоже время, уверенная работа скрипта форума, в свою очередь вселяла уверенность в своего хозяина. И вот последний стал давать рекомендации, полагая, что это он, админ форума обеспечивает работу скрипта путём настроек сервера.

    Если это так, то, несмотря на устойчивость форума к вандализму, стоит посочувствовать тому положению, в котором форум находится у админа-хозяина.

    Первым делом необходимо понимать, что кроме кодировки базы, есть еще кодировка соединения. То есть любой скрипт который подключается к MySQL должен сообщать в какой кодировке он хочет получать данные, если скрипт этого не сообщает то выбирается кодировка соединения по умолчанию обычно latin1 (но может меняться в настройках сервера).
    Если в скрипте форума кодировка соединения не указывалась, то она целиком зависит от настроек сервера. Например, в Денвере и на сервере могла быть выставлена кодировка соединения cp1251, а у XAMPP - latin1 или наоборот, из-за этого начали появляться знаки вопросов.

    По умолчанию форум (vBulletin) подключается к MySQL в кодировке latin1, и MySQL "думает", что скрипт присылает данные в latin1, а админ установил на форум файлы в кодировке utf8 и втюхивает базе инфу на УТФ. Наоборот, если админ укажет у таблиц кодировку utf8, то MySQL будет делать преобразование данных из latin1 в utf-8. В итоге в таблицах будет находиться каша, которая будет выглядеть нормальной в форуме, по той причине, что форум так же коряво как заносит данные в базу, так же их и достает. При этом админ будет жаловаться на лёгкое "недомогание" в виде плохого поиска, багов и на медленную работу форума. Но свой форум админ любит, и любит по своему - он начинает "потчивать" форум новыми тарифами и в конечном итоге приобретает для форума свой сервер. Ну, а, когда всё же скрипту, который находится в запущенном состоянии по вине админа, требуется помощь, то немощь админа и плачевное состояние базы форума, проявляется в полной мере.

    Проверить в правильной ли кодировке находятся данные можно, посмотрев правильно ли отображается русский текст в phpMyAdmin. Если нет, значит нужно исправлять кодировку в базе, если в PMA всё нормально, а на сайте крякозябры или местами отсутствует текст, значит нужно настроить в скрипте кодировку соединения с базой форума.
     
  2. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
  3. Макар

    Макар Вопрошатель

    Регистрация:
    07.10.10
    Сообщения:
    216
    Симпатии:
    73
    только что перегонял одну базу 50/50 таблицы utf8 и ср1251
    Sypex Dumper справился на ура. Экспорт в утф , а при импорте поставил Коррекция кодировки и utf и все отлично получилось
     
  4. r4mZeS

    r4mZeS Местный

    Регистрация:
    10.10.10
    Сообщения:
    240
    Симпатии:
    194
    как не получилось у меня в прошлый раз всё таблицы перегнать в ютф, так и сейчас не получается, хвалёный дампер просто тупо вешается на одном из полей с ошибкой:
    MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DYNAMICDEFAULT CHARSET=utf8' at line 11 (C:\www\local\dumper\index.php:1413)
    На самом деле, у меня там такоой mixed collation, что просто ппц =)
    Хех, полез иконвить, может через него чего получится...
     
  5. FractalizeR

    FractalizeR XenForo Addicted

    Регистрация:
    27.09.10
    Сообщения:
    1 085
    Симпатии:
    832
    Версия XF:
    1.3.2
    Моим скриптом тоже не получается?
     
  6. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Дампер не надо заставлять делать то чего быть не может. А именно, он не может экспортировать базу в дамп в той кодировке в которой Вам хочется. Здесь неоднократно давались такие советы, которые могли бы иметь место, но для частного случая.

    Пробуйте экспортируете базу форума с помощью дампера в дамп без установки кодировки (auto). Затем делаете импорт дампа уже в нужной вам кодировке (UTF). Соответственно, указываете кодировку в установкках и ставите птицу напротив опции "коррекция кодировки".
     
  7. r4mZeS

    r4mZeS Местный

    Регистрация:
    10.10.10
    Сообщения:
    240
    Симпатии:
    194
    К сожалению и он не помог.
    Да пробовал я всё это, пробовал... Ну не выходит "каменный цветок".
     
  8. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Тогда рекомендую сходит на форум автора дампа, zapimir. Если это системная ошибка, то он поможет разобраться в дампере или порекомендует где копать в базе форума. Может и сами найдёте схожую тему про ошибку, уже рассмотренную на том форуме.

    У меня тоже не всё сразу получалось, а последняя версия дампера 2.0.6 появилась по результатам обсуждения моих вопросов по работе дампера.
     
  9. r4mZeS

    r4mZeS Местный

    Регистрация:
    10.10.10
    Сообщения:
    240
    Симпатии:
    194
    фууф.. Нашёл я наконец-таки, кусок, где засада таилась. Это таблица tag, именно там стояло row_format=DYNAMIC, не стал мудрствовать лукаво, а просто дропнул её нахрен, после чего конвертация успешно завершилась. Ну что ж, теперь можно двигаться дальше. ;)
     
    FractalizeR нравится это.
  10. DefSoft

    DefSoft Местный

    Регистрация:
    12.10.10
    Сообщения:
    15
    Симпатии:
    1
    Версия XF:
    1.1.0 RC
    Нихрена у меня не вышел каменный цветок, вернее вышло все, даже ипортнул базу которую конвертнул в ЮТФ8, но на сайте все кракозябрами :( вот такого плана
    Новости и Обьявления

    подскажите люди добрые :)
    --- добавлено в: 08:31 ---
    смотрю чере phpmyadmin в нем тоже кракозябры
     
  11. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Теперь перекодируй БД из CP1251 в UTF8.
     
  12. r4mZeS

    r4mZeS Местный

    Регистрация:
    10.10.10
    Сообщения:
    240
    Симпатии:
    194
    Эмм.. я пока не конвертнул базу в utf8, у меня вообще импорт отказывался работать.
    Кстати, а сам хостинг то настроен по дефолту на utf8 или cp1251?
     
  13. CyberAP

    CyberAP Местный

    Регистрация:
    05.10.10
    Сообщения:
    2 604
    Симпатии:
    1 660
    Версия XF:
    1.5.10
    Sypex Dumpex поможет обойти все эти ограничения. К тому же я бы советовал эксперименты с БД проводить только на локалке, мало ли что у хостера может произойти.
     
  14. r4mZeS

    r4mZeS Местный

    Регистрация:
    10.10.10
    Сообщения:
    240
    Симпатии:
    194
    Ну, положим, ограничения конвертации он обойдёт, а вот за то, как это всё будет отображаться, всё равно отвечает кодировка самого форума (файлы/настройки php..) Ну и судя по этой фразе: "Новости Рё Обьявления" , означающей "Новости и Обьявления", текст рендерится именно в cp1251. Каковы предпосылки для этго, нельзя так сразу вынести диагноз, потому как мы не знаем многих факторов. Человек лишь сказал, что перекодил базы (что тоже может не быть true), до "насильственно" выставленной в 1251 кодировки на хостинге/локали.
    Да, я бы тоже советовал это, если б был уверен, что все поголовно настраивают свой локалхост так как надо. =)
     
  15. DefSoft

    DefSoft Местный

    Регистрация:
    12.10.10
    Сообщения:
    15
    Симпатии:
    1
    Версия XF:
    1.1.0 RC
    Ну вот интересные вещи, сам скуль MySQL-кодировка: UTF-8 Unicode (utf8) (по умолчанию), что делаю, форумная бд в 1251 дампексом, я ее сохраняю с перекодировкой в UTF8, распаковвываю ее в другую базу на этом же серваке .. кодировка utf8_general_ci (все как и планировалось) .. далее устнавливаю xf кодировка таблиц тоже прекрасная utf8_general_ci единственное отличие "тип" InnoDB, смотрю к приеру посты в распакованной баз все по русски показывает, т.е. все нормально. Далее, я делаю через инструменты xf импорт базы в новый форум т.е. конвертирую, и что вижу? кодировка Новости Рё Обьявления вот такая красота т.е. в чем собака порылась непонятно, или сам конвертор базы херовский или виной всему "тип" InnoDB. Вот и попробуй разберись.
     
  16. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Уважаемые, ещё раз прошу создавать дамп и экспортировать его согласно инструкции. При экспорте базы в дамп не нужно указывать кодировку.

    Это можно делать только если Вы знаете настройки сервера или случайно угадали их, при этом не нужно писать в этой теме о своих открытиях. и вводить в заблуждение других пользователей, типа я сделал вот так и у меня всё получилось, а в инструкции не праввильно написано. Только у тех кто рекомендует получилось это на 1001 раз после того как угадали настройку сервера, а если следовать инструкции, то если не с первого раза, то к десятому разу освоите дампер и всё получится.

    Инструкция написана в основном для тех у кого нет доступа к настройкам сервера. Ею с успехом можно пользоваться и тем кто может обойтись настройками сервера. Однако рано или поздно ПМА сервера ляжет, раздавленная большой базой форума и без дампекса всё одно Вам не обойтись.
    --- добавлено в: 08:00 ---
    Так получается, когда смотрите базу в кодировке ср1251 через форум в кодировке UTF.
     
  17. Romchik®

    Romchik® The Power of Dreams Команда форума

    Регистрация:
    26.09.10
    Сообщения:
    5 746
    Симпатии:
    5 311
    Версия XF:
    1.5.18
    Вряд ли InnoDB виноват. Иначе как бы вообще конвертация у всех работала? Я к тому, что булка у большинства не в InnoDB стоит.
     
  18. лиса

    лиса Заблокирован

    Регистрация:
    05.10.10
    Сообщения:
    395
    Симпатии:
    84
    Понятно, что в другом месте:D:D:D
     
  19. r4mZeS

    r4mZeS Местный

    Регистрация:
    10.10.10
    Сообщения:
    240
    Симпатии:
    194
    DefSoft, ссылку на свой ресурс кинь
     
  20. DefSoft

    DefSoft Местный

    Регистрация:
    12.10.10
    Сообщения:
    15
    Симпатии:
    1
    Версия XF:
    1.1.0 RC
    http://elitcosmetics-dv.ru/xf/ форум не для этого сайта просто тестовая площадка на сервере, сервер тоже наш и все наше :) ..
     

Поделиться этой страницей