форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
Romchik®
XenForo-Russia
 
Romchik®'s Avatar
Exclamation Sypex Dumper Lite v.1.0.8 или пытаемся решить проблемы с кодировкой
6

Слава Богу, он жив. А то что-то последнее время все стали уже о нем забывать, либо вспоминать только в негативном плане. В общем, Dumper не забросили и даже выпустили новую версию.

Скачать Sypex Dumper Lite v.1.0.8

А теперь инфа для тех, у кого проблемы с кодировкой:
Источник: http://sypex.net/encoding/

Quote:
Решение проблем с кодировкой MySQL

На этой странице мы расскажем, как поступать при неправильном переходе на 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;
  • мелкие правки.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
dobermann
Гость
Default

Как тут описано обязательно делать?:
Quote:
Кроме того рекомендуется в с помощью phpmyadmin (или другого MySQL клиента) изменить кодировку по умолчанию для вашей БД, чтобы новые таблицы создавались с правильной кодировкой. В pma для этого нужно выбрать БД, зайти в раздел "Операции" и в выпадающем меню "Сравнения" выбрать правильное (соответствующее вашим данным).
Если да, то в таком случае, какую конкретно кодировку ставить?:

 
 
Romchik®
XenForo-Russia
 
Romchik®'s Avatar
Default
0

Не знаю. Наверно cp1251_bin. Или cp1251_general_ci или cp1251_general_cs
Я бы для начала их попробовал.
 
 
VipeR
Private Person
Developer
 
VipeR's Avatar
Default
1

Quote:
Originally Posted by dobermann
Если да, то в таком случае, какую конкретно кодировку ставить?
Quote:
Originally Posted by Romchik®
cp1251_general_ci
 
 
FuseR
Продвинутый
 
FuseR's Avatar
Default
0

В разных хостеров по разному может быть и cp1251 и latin1
я лично использую всегда ..._general_ci
 
 
CEBEP
Простоузер
Default
0

Quote:
Originally Posted by Romchik® View Post
Но ваши скрипты скорее всего будут показывать вопросительные знаки, так как в них не указывается кодировка соединения cp1251, а используется latin1. Для того чтобы это исправить, нужно во всех ваших php-файлах, где вызывается функция mysql_connect, обычно перед вызовом mysql_select_db добавить следующую строку:
Code:
mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
В итоге ваши скрипты будут нормально работать как со старыми версиями MySQL, так и с новыми.
а в каких файлах вобла использует этот запрос?
и ничего, что в пхпадминие, даже после 'forced->cp1251' вапросики?
 
 
Muravey
Простоузер
Default
0

- Ранее была кодировка latin1_swedish_ci
- Слил дамп
- Поставил в мускуле по умолчанию cp1251
- залил дамп с 'forced->cp1251_general_ci'
- phpadmin видит русские буквы, а вот вобла показывает вопросики.
Сейчас установлены Мускул 5.27. PHP 5.2.0
Хелп !
 
 
Muravey
Простоузер
Default
1

Решение нашел сам
Начиная с версий 4.1.15 и 5.0.13 добавить в секцию [mysqld] или [server] файла my.cnf/my.ini параметр skip-character-set-client-handshake. Этот параметр заставляет сервер игнорировать кодироку, посылаемую клиентом, и использовать указанную серверу. В примере конфигурации ниже этот параметр уже есть.
 
 
Axom
Продвинутый
 
Axom's Avatar
Default
0

Хочу перегнать базу весом 1гиг из (большей в которой она сейчас) latin1_swedish_ci в utf8.
Но, при импортирование базы с принудительной utf8, большая часть русских слов, вместо перекодировки пропадает совсем...
Как можно решить эту проблему?
Пробовал перегонять в cp1251, так на таблице post, весом 500мб, dumper жестоко начинает тормозит и еле-еле выполняет всё, а потом застревает просто....
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 02:24 PM.


Powered by vBulletin® Version 3.5.7
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...