1

Тема: Проблема с кодировкой: русские буквы пишутся как ???????

Доброе время суток! Имею сайт на локалке. Почему-то все SQL таблицы хранятся в кодировке latin1_swedish_ci. Из-за этого при попытке разместить сайт на хостинге русские буквы пишутся как ???????. Пробую сменить кодировку - не помогает. Заметил, что на главной старице pma в разделе Сопоставление соединения с MySQL нету кодировки cp1251, а только UTF8. Может проблема в этом? Как установить дополнительную кодировку? Версия pma 2.10.0.2. Спасибо!

2

Re: Проблема с кодировкой: русские буквы пишутся как ???????

Статья по решению проблем с кодировками - http://php-myadmin.ru/learning/mysql-cir.html

Сопоставление cp1251_general_ci.

Также воспользуйтесь поиском по форуму, пожалуйста.

3

Re: Проблема с кодировкой: русские буквы пишутся как ???????

1. В phpMyAdmin на локалке у меня все таблицы уже в кодировке latin_swedish, а в материале, ссылку на который Вы дали, везде написано, что на локалке кодировка нормальная! Т.е. получается,что это не мой случай.
2. У меня нету в phpMyAdmin выбора кодировки cp1251! Это ведь от версии MySQL зависит или нет? Может можно как-то обновить эту версию? сейчас у меня Версия сервера: 4.1.14-nt и Версия MySQL-клиента: 3.23.49.

4

Re: Проблема с кодировкой: русские буквы пишутся как ???????

В вышеприведенной статье описан ваш и вариант проблемы. Читайте внимательнее.

Создайте дамп и покажите в каком виде  в него записываются русские буквы.

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

5

Re: Проблема с кодировкой: русские буквы пишутся как ???????

http://www.satworld.ru/satworld.sql - вот дамп БД. Может есть какой-нить редактор текстовой,в котором можно открыть этот дамп и сконвертировать его в читаемую кодировку?

6

Re: Проблема с кодировкой: русские буквы пишутся как ???????

В вышеприведенной статье описан ваш и вариант проблемы. Читайте внимательнее.

Из статьи:

1. PHP ИСПОЛЬЗУЕТ НЕВЕРНУЮ КОДИРОВКУ В КАЧЕСТВЕ КЛИЕНТСКОЙ

Симптомы:
Через phpMyAdmin (здесь и далее подразумевается версия умеющая работать с кодировками, т.е. >= 2.6.0) все по-русски, а в скрипт приходят вопросительные знаки.
Скрипт, заносящий данные в базу, видит русский нормально, а после вставки, как в правильном скрипте, так и в phpMyAdmin-е — знаки вопросов.

2. MySQL ИСПОЛЬЗУЕТ НЕВЕРНУЮ КОДИРОВКУ

Симптомы:
Русский текст приходит в скрипт как русский, в консольном клиенте тоже все хорошо. Однако не работает сортировка, перевод в верхний/нижний регистр и т.д. Если применить решение из проблемы №1, то либо русский текст становится вопросами, либо mysql_error() возвращает сообщение похожее на "Illegal mix of collations (latin1_general_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE)...". В тоже время phpMyAdmin русский текст отображает как "крокозябры" (латинские символы с умляутами и т.д.).

У меня уже на локалке ДО экспорта БД, русских букв НЕТ!

7

Re: Проблема с кодировкой: русские буквы пишутся как ???????

На ваше мыло в профиле дамп отправить можно?

Перекодировал все в cp1251. Но не факт, что скрипт будет работать, я не знаю как у него соединение устанавливается и в какой кодировке изначально идут данные на хост.

Пробуйте.

8

Re: Проблема с кодировкой: русские буквы пишутся как ???????

Дамп конечно отправляй! Спасибо тебе огромное. попробую. Я тут за 4 дня уже стока перелопатил инфы и статей...

9

Re: Проблема с кодировкой: русские буквы пишутся как ???????

Так же столкнулся.. latin1_swedish_ci дефолт.
Мне помог экспорт через пма 2.5 который не заморачивается с кодировами, удаление всех DEFAULT CHARSET=** и импорт через пма 2.10 указав кодировку 1251 и совместимость ansi
В связи с чем вопрос: у меня много баз из них часть на шведском, часть на русском. Мне нужно для каждой базы теперь менять сопоставление соединения в менюшке пма 2.10 или есть там какая-то одна универсальная?

10

Re: Проблема с кодировкой: русские буквы пишутся как ???????

Еще вот что не совсем понял:

1) Оставить запрос "SET NAMES кодировка" в начале скрипта. Если скриптов много – см. вариант 2.

2) Заставить MySQL автоматически выполнять этот запрос при каждом соединении с ним.
Для этого необходимо в конфигурационном файле MySQL, в секции [mysqld] добавить следующую строку: init-connect="SET NAMES кодировка".

так как если делать импорт/экспорт старым пма 2.5 или собственным скриптом то всё везде будет почему-то совершенно нормально отображаться (кроме новых пма "понимающих кодировки" в которых может быть написано и latin1_swedish_ci, и крюкозяблики, и вопросики)
- пункты 1 и 2 требуются исключительно для корректной работы новых пма?

11

Re: Проблема с кодировкой: русские буквы пишутся как ???????

Volgot сказал:

Мне помог экспорт через пма 2.5 который не заморачивается с кодировами, удаление всех DEFAULT CHARSET=** и импорт через пма 2.10 указав кодировку 1251 и совместимость ansi

Получается кирилица cp1251 лежит в таблицах latin1?

Volgot сказал:

В связи с чем вопрос: у меня много баз из них часть на шведском, часть на русском. Мне нужно для каждой базы теперь менять сопоставление соединения в менюшке пма 2.10 или есть там какая-то одна универсальная?

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

Volgot сказал:

так как если делать импорт/экспорт старым пма 2.5 или собственным скриптом то всё везде будет почему-то совершенно нормально отображаться (кроме новых пма "понимающих кодировки" в которых может быть написано и latin1_swedish_ci, и крюкозяблики, и вопросики)
- пункты 1 и 2 требуются исключительно для корректной работы новых пма?

Пункты 1 и 2 требуются исключительно для корректной работы пользовательских скриптов, phpMyAdmin корректные данные отображает нормально в любом случае. Разберитесь с кодировками своих таблиц.

12

Re: Проблема с кодировкой: русские буквы пишутся как ???????

У меня такая же проблема с кодировкой, только наоборот. Мне нужно, чтобы текст пишутся не на кодировке ср1251, а на UTF-8 или хотя бы ср1252. Прочитал тему http://php-myadmin.ru/learning/mysql-cir.html, которую вы рекомендовали. Однако вряд ли могу что нибудь изменить в файле my.ini, поскольку сайт стоит не в локале, а на сервере РКБ-хостинга. Заметил, что у них в ПМА стоит Global value для charset: ср1251. Посмотрите рисунок:

http://i149.photobucket.com/albums/s73/vietchannhan/charset.gif

Подскажите, это можно как-нить изменить, или не получается?

13

Re: Проблема с кодировкой: русские буквы пишутся как ???????

Решение все то же: сразу после соединения с БД выполнить запрос "SET NAMES кодировка". Кодировкой в вашем случае будет "utf8".