Отправляет email-рассылки с помощью сервиса Sendsay

[TC] Перекодирова базы Mysql

Всем привет!

Ребята, разбирающиеся в Mysql, можете ли вы помочь мне в перекодировке базы?

Есть файл базы сайта, который получился в кодировке Binary.
Его нужно перекодировать в cp-1251.
Я пришлю этот файл на личный адрес тому, кто может помочь перекодировать этот
файл локально, в Denwer, например.
Нужно перекодировать, потому что иной раз требуется что-то исправить, но хоть
и
на сайте текст читается, в базе он отображается карказябрами.

Уже больше года пытаюсь безрезультатно сообразить, что там как нужно сделать,
но
понимания не хватает. Нашла даже в интернете описания, что и как сделать, но
не
умею работать на сервере Mysql (кроме импорта и экспорта базы).

Помогите, пожалуйста!

Заранее благодарна.

Ответить   Sat, 3 Oct 2009 13:45:18 +0400 (#913971)

 

Ответы:

Приветствую всех.

[...]

Скорее всего, нет необходимости перекодировать базу, а есть необходимость правильно
выставить кодовые страницы. Но выставить их можно в разных местах (и не все места
одинаково полезны), поэтому вот, что необходимо было сообщить:
1. Charset в html-страницах на сайте.
2. Charset в html-страницах того, чем вы пользуетесь для работы с базой (наверное,
это phpmyadmin).
3. Результат SQL-запроса:
show variables like "char%";
(если серверов несколько, например, локальный и на хостинге, то для каждого сервера).

После этого можно будет что-нибудь полезное посоветовать, а пока -- если в п.1
и п.2 charset'ы отличаются, то, например, в phpmyadmin можно выбрать charset
именно для страничек phpmyadmin (по-моему, при авторизации).

Присылайте (предполагается, что база экспортирована в sql-формате и сжата архиватором).
Кстати, вы можете самостоятельно открыть sql-файл текстовым редактором, поддерживающим
различные кодовой страницы, и посмотреть: символы из какой кодовой страницы реально
используются в вашем binary.

Успехов. Анатолий.

Ответить   "i_chay" Sat, 3 Oct 2009 10:02:28 +0500 (#913992)

 

Приветствую, i_chay!

правильно

Об удалённом сервере.

В файле .htaccess прописана cp1251

AddDefaultCharset WINDOWS-1251

charset=utf-8" />

Внизу страницы phpMyAdmin написано:

Language
Russian (ru-utf-8)

MySQL-кодировка: UTF-8 Unicode (utf8)

Сопоставление соединения с MySQL:
utf8_general_ci

Получила ответ:
Variable_name
Value
character_set_client
utf8
character_set_connection
utf8
character_set_database
cp1251
character_set_filesystem
binary
character_set_results
utf8
character_set_server
koi8r
character_set_system
utf8
character_sets_dir
/usr/share/mysql/charsets/

сервера).

Да сервера два, и два сайта. Один вот нормально, а второй в binary.

Теперь о локальном сервере.

charset=windows-1251"

Внизу страницы phpMyAdmin написано:
Language
Russian (ru-win1251)

MySQL-кодировка: Windows Cyrillic (cp1251)

Сопоставление соединения с MySQL:
utf8_general_ci

Странный ответ:
#1146 - Table 'имя_базы.variables' doesn't exist

Хотя, база существует и читается.

Вопрос в том, как бы все эти сравнения уровнять? Где на локальной машине можно
выставить те же параметры, что и на удалённом сервере? Просто кроме
сопоставления соединения не могу найти больше никаких настроек.

Когда я захожу на удалённом сервере в структуру и жму обзор таблицы, которая
содержит русский текст,
то вижу нечто нечитаемое, больше цифры.

Далее, я экспортировала базу, поместила её на локальнный сервер, предворительно
заменив binary на cp1251 в строке структур таблиц:
) ENGINE=MyISAM DEFAULT CHARSET=binary AUTO_INCREMENT=1 ;
В итоге, заходя в обзор какой-либо из таблиц, я могу читать записи по-русски,
что уже радует (это на локальном сервере).

Но экспорт базы с локального сервера ничего не изменил. В текстовом файле
по-прежнему нечитаемые символы. Я же добиваюсь, чтоб экспортированная база
читалась, чтоб можно было прочесть как английский, так и русский текст. И знаю,
что такое бывает, на примере другой идентичной базы, работающей на этих двух
серверах.

архиватором).

Если всё же после предоставленных данных разобраться не удастся, то пришлю архив
базы на личный адрес с благодарностью.

реально

Пока ничем не удалось перекодировать. Пробовала даже Штирлица.

Ответить   Sat, 3 Oct 2009 20:42:33 +0400 (#914054)

 

Приветствую всех.

На локальном mysql переменные можно посмотреть так:
1. В каталоге, где установлен mysql, найти подкаталог bin.
2. В командной строке выполнить:
rem если служба mysql не запущена
net start mysql

rem консольный клиент mysql
mysql -u<username> -p<password>
3. Вы должны попасть в командную строку mysql:

Введите:
show variables like "char%";

Точка с запятой -- обязательно. Выход по команде: exit.

Если на удаленной машине вы используете phpmyadmin, то, вместо show variables
like "char%",
нужно смотреть страничку по ссылке "системные переменные базы" или "переменные",
на которой найти переменные, начинающиеся с characterset_....
Там будут не только значения, установленные phpmyadmin для текущей сессии, но
и значения по умолчанию.

В каталоге, где установлен локальный mysql, в подкаталоге bin есть файл MySQLInstanceConfig.exe,
который является мастером настройки сервера.
Используйте его для изменения параметров.

Если с мастером будут проблемы, то в C:\WINDOWS/ нужно найти файл my.ini и в
нем прописать параметр default-character-set (для mysql 4.x.x) в следующих секциях:
[mysql]
# влияет на character_set_client,
# character_set_connect, character_set_result
default-character-set=name

...
[mysqld]
# влияет на character_set_database,
# character_set_server
default-character-set=name
...
где name -- это имя кодировки
И запуск мастера, и редактирование my.ini нужно делать, предварительно остановив
службу mysql.
Также учтите, что уже существующие данные (кириллица) перестанут корректно отображаться.
То есть импортировать базу нужно уже после редактирования my.ini.
Если служба mysql не запускается, то, вероятнее всего, вы допустили ошибки в
my.ini. См. системные журналы ошибок.

В mysql 5, если не ошибаюсь, нужно в этих секциях прописывать сами переменные
( с '-' вместо '_') (по mysql 5 есть много материала в сети, в т.ч. и по настройкам
кодовыхс траниц).

То есть вы редактировали sql-файл?
А если binary не менять, что получается?

Успехов. Анатолий.

Ответить   "i_chay" Sat, 3 Oct 2009 20:19:35 +0500 (#914177)

 

Приветствую всех.

[...]

Перед запуском мастера и/или редактированием my.ini сделайте резервную копию
этого файла.

Успехов. Анатолий.

Ответить   "i_chay" Sat, 3 Oct 2009 20:25:19 +0500 (#914179)

 

Приветствую, i_chay!

Тогда база не читается ни в экспортированном файле, ни в phpmyadmin в обзоре
таблиц.
Но это актуально для локального сервера. На удалённом же база не читается при
любых раскладах.
На локальном поставила всё, как на удалённом - и там теперь не читается.

Думаю, что сама не разберусь, так что направляю архив базы на ваш личный адрес.

Благодарю

Ответить   Sun, 4 Oct 2009 10:55:16 +0400 (#914275)