VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Sypex Dumper Lite v.1.0.8 или пытаемся решить проблемы с кодировкой
6
Слава Богу, он жив. А то что-то последнее время все стали уже о нем забывать, либо вспоминать только в негативном плане. В общем, Dumper не забросили и даже выпустили новую версию.
На этой странице мы расскажем, как поступать при неправильном переходе на MySQL 4.1 и выше, в результате чего возникли следующие проблемы:
Вместо русских символов отображаются вопросительные знаки
В phpmyadmin русский текст отображается как "крокозябры" (латинские символы с умляутами и т.п.)
Неправильно сортируются русские слова (кириллица)
При восстановлении выдаётся ошибка типа "Duplicate entry '??????' for key 2"
В связи с тем, что в последнее время всё чаще стали задавать подобные вопросы, мы выпустили промежуточную версию скрипта Sypex Dumper Lite 1.0.8.
Основное его отличие от предыдущего, улучшенная работа с кодировками.
Добавлен автовыбор кодировки, путем установки для CHARSET значения "auto" (установлено по умолчанию). При этом скрипт автоматически выбирает кодировку соединения исходя из кодировки таблицы. Кроме того, добавилась возможность принудительного изменения кодировки таблиц, для этого в RESTORE_CHARSET нужно установить 'forced->имя_кодировки', к примеру 'forced->cp1251'. Это как раз для случаев, когда данные в cp1251, а у таблиц - latin1.
Для коррекции кодировки вашей БД нужно выполнить следующие действия:
Cохранить БД с помощью нового дампера 1.0.8 (предварительно установив в dumper.php следующие значения, CHARSET = 'auto', RESTORE_CHARSET = 'forced->cp1251'), желательно для подстраховки убедиться, что в дампе нормально сохранены русские символы, после чего восстановить таблицы этим же скриптом из только, что созданного дампа. Теперь у таблиц будет правильная кодировка, и phpmyadmin будет правильно показывать и сортировать русские символы.
Но ваши скрипты скорее всего будут показывать вопросительные знаки, так как в них не указывается кодировка соединения cp1251, а используется latin1. Для того чтобы это исправить, нужно во всех ваших php-файлах, где вызывается функция mysql_connect, обычно перед вызовом mysql_select_db добавить следующую строку:
Code:
mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
В итоге ваши скрипты будут нормально работать как со старыми версиями MySQL, так и с новыми.
Кроме того рекомендуется в с помощью phpmyadmin (или другого MySQL клиента) изменить кодировку по умолчанию для вашей БД, чтобы новые таблицы создавались с правильной кодировкой. В pma для этого нужно выбрать БД, зайти в раздел "Операции" и в выпадающем меню "Сравнения" выбрать правильное (соответствующее вашим данным).
Что нового:
Quote:
Версия 1.0.8 [2006.10.14]:
добавлена автоматическая смена кодировки соединения (подробнее), для решение проблем с русскими символами;
добавлена возможность принудительной смены кодировки при восстановлении;
для таблиц типов MERGE и HEAP сохраняется только структура таблицы;
исправлено сохранение таблиц у которых названия совпадают с зарегистрированными словами MySQL;
Кроме того рекомендуется в с помощью phpmyadmin (или другого MySQL клиента) изменить кодировку по умолчанию для вашей БД, чтобы новые таблицы создавались с правильной кодировкой. В pma для этого нужно выбрать БД, зайти в раздел "Операции" и в выпадающем меню "Сравнения" выбрать правильное (соответствующее вашим данным).
Если да, то в таком случае, какую конкретно кодировку ставить?:
@Romchik®
XenForo-Russia
Join Date: Jul 2005
Location: Европа
Награды в конкурсах:
Posts: 3,491
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 7397
Репутация в разделе: 2728
0
Не знаю. Наверно cp1251_bin. Или cp1251_general_ci или cp1251_general_cs
Я бы для начала их попробовал.
@VipeR
Private Person
Developer
Join Date: Aug 2005
Posts: 5,593
Версия vB: 1.x.x
Пол:
Reputation:
Гуру 4633
Репутация в разделе: 1969
1
Quote:
Originally Posted by dobermann
Если да, то в таком случае, какую конкретно кодировку ставить?
Quote:
Originally Posted by Romchik®
cp1251_general_ci
@FuseR
Продвинутый
Join Date: Jul 2006
Posts: 37
Версия vB: 1.x.x
Пол:
Reputation:
Опытный 13
Репутация в разделе: 10
0
В разных хостеров по разному может быть и cp1251 и latin1
я лично использую всегда ..._general_ci
@CEBEP
Простоузер
Join Date: Aug 2006
Location: wocsoM
Posts: 19
Reputation:
Novice 2
Репутация в разделе: 1
0
Quote:
Originally Posted by Romchik®
Но ваши скрипты скорее всего будут показывать вопросительные знаки, так как в них не указывается кодировка соединения cp1251, а используется latin1. Для того чтобы это исправить, нужно во всех ваших php-файлах, где вызывается функция mysql_connect, обычно перед вызовом mysql_select_db добавить следующую строку:
Code:
mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
В итоге ваши скрипты будут нормально работать как со старыми версиями MySQL, так и с новыми.
а в каких файлах вобла использует этот запрос?
и ничего, что в пхпадминие, даже после 'forced->cp1251' вапросики?
@Muravey
Простоузер
Join Date: Jan 2006
Posts: 13
Версия vB: 3.6.4
Reputation:
Novice 1
Репутация в разделе: 1
0
- Ранее была кодировка latin1_swedish_ci
- Слил дамп
- Поставил в мускуле по умолчанию cp1251
- залил дамп с 'forced->cp1251_general_ci'
- phpadmin видит русские буквы, а вот вобла показывает вопросики.
Сейчас установлены Мускул 5.27. PHP 5.2.0
Хелп !
@Muravey
Простоузер
Join Date: Jan 2006
Posts: 13
Версия vB: 3.6.4
Reputation:
Novice 1
Репутация в разделе: 1
1
Решение нашел сам
Начиная с версий 4.1.15 и 5.0.13 добавить в секцию [mysqld] или [server] файла my.cnf/my.ini параметр skip-character-set-client-handshake. Этот параметр заставляет сервер игнорировать кодироку, посылаемую клиентом, и использовать указанную серверу. В примере конфигурации ниже этот параметр уже есть.
@Axom
Продвинутый
Join Date: Mar 2006
Posts: 479
Версия vB: 3.8.4
Reputation:
Опытный 60
Репутация в разделе: 63
0
Хочу перегнать базу весом 1гиг из (большей в которой она сейчас) latin1_swedish_ci в utf8.
Но, при импортирование базы с принудительной utf8, большая часть русских слов, вместо перекодировки пропадает совсем...
Как можно решить эту проблему?
Пробовал перегонять в cp1251, так на таблице post, весом 500мб, dumper жестоко начинает тормозит и еле-еле выполняет всё, а потом застревает просто....