1 (изменено: German76, 2011-06-15 11:20:04)

Тема: Проблема с кодировкой в PhpMyAdmin

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

MySQL
Server: localhost via TCP/IP
Server version: 5.1.40-community
Protocol version: 10
User: German@localhost
MySQL charset: UTF-8 Unicode (utf8)

Web server
Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.3.3
MySQL client version: mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 $
PHP extension: mysql

phpMyAdmin
Version information: 3.2.3

Сервер локальный.
При загрузке дампа БД в PMA данные на русском отображаются так - Ëó÷øèå ìîäåëè âåùåé - èíòåðíåò ìàãàçèí æåíñêîé îäå....
А на сайте (локальный сервер) так ?????, ????, ????????
В дампе БД кириллица отображается так - 'ГЌГ Г§ГўГ ГГЁГҐ Âàøåãî ìàãàçèГГ 

Глобальная кодировка соединения с MySQL (запрос SHOW GLOBAL VARIABLES LIKE 'char%';) :
Variable_name     Value
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\local\mysql-5.1\share\charsets\

настройки my.cnf:

[client]
port                  = 3306
socket                = /tmp/mysql5.sock
default-character-set = cp1251
character-sets-dir    = /usr/local/mysql-5.1/share/charsets

[mysqld]
# Кодировка баз данных по умолчанию.
default-character-set = cp1251
init-connect = "set names cp1251"
skip-character-set-client-handshake

Понимаю, что у данной проблемы может быть много решений. Может быть здесь мне помогут... Заранее благодарю за ответ!

2

Re: Проблема с кодировкой в PhpMyAdmin

German76 сказал:

В дампе БД кириллица отображается так - 'ГЌГ Г§ГўГ ГГЁГҐ Âàøåãî ìàãàçèГГ

Это плохо. Не уверен, что данные можно вернуть.

Найдите дамп, который был сделан до экспериментов (конечно если они производились) и отошлите его на hanut@php-myadmin.ru, может получится перекодировать. Если дамп большой, то отправьте любую таблицу содержащую кириллицу.

3

Re: Проблема с кодировкой в PhpMyAdmin

Спасибо за ответ!

Выслал письмо с темой "дамп базы German". Это изначальная база, которую мне скинул человек, который делал сайт.

4

Re: Проблема с кодировкой в PhpMyAdmin

German76 сказал:

Выслал письмо

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

Из my.cnf пока уберите строку skip-character-set-client-handshake. Остальное в настройках все нормально.

5

Re: Проблема с кодировкой в PhpMyAdmin

Hanut сказал:

skip-character-set-client-handshake

Спасибо большое!

6

Re: Проблема с кодировкой в PhpMyAdmin

Выслал перекодированный дамп. Теперь в таблицах кодировка cp1251.

Перед импортом таблиц, создайте базу данных и на странице операций в phpMyAdmin проверьте, чтобы стояло сравнение cp1251_general_ci. Затем импортируйте дамп и проверьте работу скрипта. Обязательно обратите внимание, чтобы скрипт не подключался под root, а имел отдельного пользователя не имеющего глобальных административных привилегий.

7

Re: Проблема с кодировкой в PhpMyAdmin

Hanut а не лучше кодировку в сравнении поставить utf8_unicode_ci  или utf8_general_ci? на мой взгляд лучше потому что если php и html документы написаны в utf8 то на сайте не будет вместо символов знаков вопроса.

8

Re: Проблема с кодировкой в PhpMyAdmin

только не знаю в чем разница unicode или general и что значит ci?

9

Re: Проблема с кодировкой в PhpMyAdmin

Artembolt сказал:

только не знаю в чем разница unicode или general и что значит ci?

general - это основная таблица символов Юникода, желательно использовать именно ее. utf8_unicode_ci - более точное сравнение для языков имеющих акценты над или под символами, но для кириллицы все же лучше utf8_general_ci. ci - означает case insensitive, то есть регистронезависимое сравнение; cs на конце означает case sensitive, регисрозависимое сравнение.