1 (изменено: ПавелЪ, 2006-10-09 08:31:44)

Тема: Кодировка. Проблема c кодировкой.

Здравствуйте!
Проблема следующая.
На локальной машине (на домашнем компьютере), пользуясь phpmyadmin 2.6.1-rc1, а также 2.9.0.2 (видимо не зависит от версии phpmyadmin), добавлял данные на русском языке в б.д. Все отображалось нормально, что в самом phpmyadmin, что непосредственно на сайте.
Загрузив базу данных и php-скрипты на сервер хостера, и в самом phpmyadmin и непосредственно на сайте вся русскоиязычная информация отображается знаками вопроса.
Что в этом случае делать? Не пойму как изменить кодировку всей б.д.
Посмотрел в разделе "Сиситемные переменные", параметр character set =latin1 .

Я так понимаю, что это и есть текущая кодировка. Но как ее изменить?
И что в этом случае предпринять?

Параметр character sets =
latin1 big5 czech euc_kr gb2312 gbk sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5


Заранее большое спасибо за помощь!

С уважением, ПавелЪ

2

Re: Кодировка. Проблема c кодировкой.

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

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

В случае затруднений, обращайтесь. Постараемся помочь.

3

Re: Кодировка. Проблема c кодировкой.

Да, я прочитал все эти статьи и попробовал сделать то, что предлагается в http://phpclub.ru/faq/wakka.php?wakka=M … #p-4270-6.
Но все осталось по-прежнему.
Я просто запутался и не могу понять логики установки и совмещения кодировок, совместное их использование. Что делать дальше - представляю очень смутно... sad

4

Re: Кодировка. Проблема c кодировкой.

ПавелЪ

Я просто запутался и не могу понять логики установки и совмещения кодировок, совместное их использование. Что делать дальше - представляю очень смутно...

Логика здесь до безобразия проста. Узнай у своего хостера кодировку базы данных на удаленном MySQL-сервера.

Затем выполни перекодировку своей локальной базе с помощью iconv(), о том как это сделать упоминалось в одном из топиков, указанных тебе Hanut-ом.

После установи кодировку для своего локального MySQL-сервера так чтобы она соответствовала кодировке удаленного сервера твоего хостинг-провайдера, чтобы потом впоследствии не иметь проблем с несовместимостью кодировок. Как это сделать, детально описано в статье с PHPCLUB.RU

Нет неразрешимых проблем, есть неприятные решения. (Э. Борн)

5

Re: Кодировка. Проблема c кодировкой.

А смогу я преобразовать свою бд, находящуюся в кодировке latin1 в кодировку utf8 с помощью дампа, используя командную строку и функцию mysqldump? И если да, то правильно ли я выполняю запрос, а то я мало знаком с работой через командную строку :
mysqldump --opt --set-charset=utf8 bd_name>dump.sql

И при создании бд через phpmyadmin мне нужно указывать кодировку utf8_bin или какую-то другую utf8 ? Mysql работает под кодировкой utf8

Спасибо!

6

Re: Кодировка. Проблема c кодировкой.

ПавелЪ
К сожалению с помощью mysqldump перекодировать не получится.
Ключ --set-charset не предполагает значения, он только указывает необходимость вставки строки SET NAMES default_character_set, кстати, данный ключ можно не указывать, так как он включен по умолчанию. Ключ --opt, также включен по умолчанию.

При создании БД с кодировкой UTF-8 через phpMyAdmin необходимо выбирать utf8_general_ci.

7

Re: Кодировка. Проблема c кодировкой.

То есть с помощью командной строки я никак не смогу выполнить перекодирование?

8

Re: Кодировка. Проблема c кодировкой.

Попробуйте так:
mysqldump -uUser -pPass --default-character-set=utf8 database_name > dump.sql

Если дамп будет иметь неправильную кодировку, то попробуйте поиграть с ключом --default-character-set=utf8, поменяв его значение на cp1251 или latin1.

Очень сложно что-то посоветовать не зная в каком виде данные лежат в БД и какие стоят настройки на вашем хостинге.

Да, и не забудьте, что даже если вы получите в дампе Юникод, вам всё равно необходимо будет изменять кодировки и сопоставления в запросах внутри дампа. Хотя возможно можно было бы изменить их заранее в phpMyAdmin.

В общем пробуйте, если что будем разбираться дальше.

9

Re: Кодировка. Проблема c кодировкой.

Подскажите, если возможностсь экспортировать дамп в заданной кодировке?
Для импортирования дампа на сервер хостер требует, что бы кодировка была cp1251, а у меня экспортируется в UTF-8

10

Re: Кодировка. Проблема c кодировкой.

banshi
Как я понял надо сохранить дамп БД на домашнем компьютере для последующего импорта на хост.

Могу посоветовать сделать это с помощью командной строки.

C:\>mysqldump -uroot -ppass --default-character-set=cp1251 --compatible=mysql40 dbname > dump.sql

В этом случае мы экспортируем дамп в кодировке сp1251, в совместимости с MySQL 4.0. Совместимость со старой версией даёт отсутствие установки кодировок в дампе, то есть на хосте обязательно надо создать БД именно в cp1251 и импортировать в нее ваши таблицы.