1

Тема: Еще одна проблема с перекодировкой.

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


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

Такие настройки были на старом хостинге:

character_set_client      utf8
character_set_connection     utf8
character_set_database     utf8
character_set_filesystem     binary
character_set_results     utf8
character_set_server     utf8
character_set_system     utf8
character_sets_dir     /usr/share/mysql/charsets/

На новом же — такие:

character_set_client     cp1251
character_set_connection     cp1251
character_set_database     cp1251
character_set_filesystem     binary
character_set_results     cp1251
character_set_server     cp1251
character_set_system     utf8
character_sets_dir     /usr/share/mysql/charsets/

Что здесь можно сделать?

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

2

Re: Еще одна проблема с перекодировкой.

Pupurup
Откройте дамп и посмотрите отображается ли там кириллица. Если вместо кириллица крякозябы, то покажите как они выглядят.
Если отображается, посмотрите кодировку файла и при импорте в phpMyAdmin выберите ее.

Не помогло, тогда дальше.

Если есть доступ к конфигурационному файлу MySQL (my.cnf), то можно в раздел [mysqld] добавить строку определяющую кодировку соединения:
init-connect="SET NAMES utf8"

Если нет доступа к my.cnf, тогда смотрите документацию скрипта, ищите директиву устанавливающую кодировку соединения с MySQL.

3

Re: Еще одна проблема с перекодировкой.

Hanut сказал:

Если вместо кириллица крякозябы, то покажите как они выглядят.

Вот они:

???????????? BTL – ??????????? «???????? ??????? ?...

Hanut сказал:

Если есть доступ к конфигурационному файлу MySQL (my.cnf)

Доступа нет

Hanut сказал:

смотрите документацию скрипта, ищите директиву устанавливающую кодировку соединения с MySQL

В скрипт вставил команды:

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

Все равно на сайте вместо кириллицы — вопросительные знаки sad

4

Re: Еще одна проблема с перекодировкой.

Pupurup
Из вопросиков вернуть данные нельзя.
Посмотрите в phpMyAdmin как там выглядит кириллица. Если она читаема, или крякозябы, то сохраните дамп в utf8.

Также, попробуйте открыть дамп с помощью Notepad++.

mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251'");
Замените на:
mysql_query('SET NAMES cp1251');

При подключении не используйте пользователя root.

5 (изменено: Pupurup, 2009-02-04 18:18:37)

Re: Еще одна проблема с перекодировкой.

Hanut сказал:

то сохраните дамп в utf8

там кракозябры...
Как это? Создать новый дамп? Как в таком случае я могу изменить кодировку дампа?

Hanut сказал:

Также, попробуйте открыть дамп с помощью Notepad++.

кириллица там выглядит так:

'????????? ?????????, BTL, ????????? ????????, ????????? ????????, ?????, promo, ????????? ??????, ?????

Hanut сказал:

Замените на:
mysql_query('SET NAMES cp1251');

заменил. толку — ноль sad

UPD:

смущает кодировка таблиц базы:

http://i053.radikal.ru/0902/e6/c24892d74a6a.jpg

но все выглядело так же и на предыдущем хостинге...

6

Re: Еще одна проблема с перекодировкой.

Pupurup сказал:

заменил. толку — ноль

Будет толк после перекодировки дампа и его корректного импорта.
Выслал вам на почту скрипт перекодировки с инструкцией использования.

7

Re: Еще одна проблема с перекодировкой.

Hanut, огромное Вам пионэрское спасибо! При помощи Вашего чудодейственного скрипта все же удалось привести базу в надлежащий вид. Единственное, чего не смог скрипт, это внести одно маленькое, но критическое изменение в дамп:

http://s43.radikal.ru/i099/0902/52/0c3b40d1383f.gif

ср1251 пришлось вбить ручками в Notepad++ взамен почему-то оставшегося в дампе utf8.

Еще раз огромнейшее спасибо!

8

Re: Еще одна проблема с перекодировкой.

Pupurup
В дампах сделанных с помощью phpMyAdmin этих строк нет, поэтому скрипт перекодировки их и не изменяет.
По идее, их можно было просто удалить. Но ваша замена тоже приемлема.

9

Re: Еще одна проблема с перекодировкой.

Hanut сказал:

В дампах сделанных с помощью phpMyAdmin этих строк нет

Странно... Но именно phpMyAdmin делал этот дамп... Откуда же они??

10

Re: Еще одна проблема с перекодировкой.

Pupurup
Такие строки обычно добавляет программа mysqldump. В самых первых строках дампа всегда написано чем он был сделан.

11

Re: Еще одна проблема с перекодировкой.

Hanut сказал:

В самых первых строках дампа всегда написано чем он был сделан.

-- phpMyAdmin SQL Dump
-- version 2.11.9.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Дек 26 2008 г., 02:39
-- Версия сервера: 5.0.51
-- Версия PHP: 5.2.6

12

Re: Еще одна проблема с перекодировкой.

Pupurup
Даже не знаю как эти строки там оказались.

13

Re: Еще одна проблема с перекодировкой.

Уважаемый Hanut!
Не могли бы Вы также и мне прислать скрипт перекодировки  с  инструкцией использования для решения подобной проблемы!?
Заранее благодарен!

14

Re: Еще одна проблема с перекодировкой.

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