Помощь - Поиск - Пользователи - Календарь
Полная версия: phpMyAdmin и кодировки
Онлайн-форум hostobzor.ru > Архив (темы до 1.06.2015). Только для чтения. > Коммерческий хостинг. Общие форумы > Флейм
Admin
Помогите, кто может, распутаться с кодировками.

Имеем:
- сайт, который работает в Юникод (UTF-8). По крайней мере, такая кодировка указана в браузере и при этом все, что написано на сайте, вводится с него в базу и выводится на него из базы, отображается в кириллице корректно.
- phpMyAdmin 2.6.4-pl4. В броузере задана такая же кодировка - Юникод (UTF-8). Все русские надписи самого PMA отображаются корректно. А все, что было записано в базу с сайта, в виде знакомых кракозяблов: Главная страница, РЅРёР¶РЅРёР№. Если ввести в базу запись из PMA, то в введенных полях отображается кирилица, а на сайте в этих полях квадратики.

На странице "добро пожаловать" самого PMA указано:
Language : Russian (ru-utf-8)
MySQL-кодировка: UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: utf8_unicode_ci
С этим последним играл по всякому, никаких изменений не обнаружил.

Кто-нибудь может подсказать, как добиться того, чтобы и в phpMyAdmin можно было кириллицу увидеть в полях этой БД?
MasterDedicated
браузер принудительно переключить на utf8
Admin
Цитата(Andrey Sumarokov @ 16.04.2009, 12:17) *

браузер принудительно переключить на utf8

Он переключен, автоопределение кодировки отключено. Все надписи (менюшки и прочий текст в phpMyAdmin) отображается корректно. Фигня только в полях БД.


Кстати, а перевод вот этого http://dev.mysql.com/doc/mysql/en/Charset-connection.html никто не встречал?
Welcomehost
Можно попробовать в my.cnf указать следующее:

[mysqld]
init-connect="SET NAMES cp1251"
character-set-server=cp1251
collation-server=cp1251_general_ci
Admin
Цитата(Welcomehost @ 16.04.2009, 13:00) *

Можно попробовать в my.cnf

А есть 100%-я уверенность в том, что такое изменение настроек сервера базы данных не отразиться на отображении информации из других баз, которые сегодня вполне корректно работают?
RM Host
Такой вопрос: а когда в PMA заходите уже непосредственно в базу и видите её структуру, в колонке "Сравнение" тоже написано utf8_unicode_ci?
Boris A Dolgov
Цитата(Welcomehost @ 16.04.2009, 13:00) *

Можно попробовать в my.cnf указать следующее:

[mysqld]
init-connect="SET NAMES cp1251"
character-set-server=cp1251
collation-server=cp1251_general_ci

Сколько мук при переносе на нормальные сервера с utf8 доставляют эти строки!
Откуда вообще пошла мода писать это?
ex-SavaHost
Цитата(Admin @ 16.04.2009, 08:54) *

Кто-нибудь может подсказать, как добиться того, чтобы и в phpMyAdmin можно было кириллицу увидеть в полях этой БД?
Сталкивался при переносе нескольких сайтов...
Я решал подобную проблему перекодировкой при помощи вот этой проги - http://sypex.net/encoding/
Как - не спрашивайте, давно было, но попробовав несколько вариантов настройки, подобрал нужный и получилось...
Roman Hirauka
Пётр Петрович, попробуйте выставить принудительный коннект самого скрипта к БД, например:
Код
mysql_query("SET NAMES 'cp1251'");  
или
mysql_query("SET CHARACTER SET 'cp1251'");

Просто у меня сложилось впечатление, что сервер корректно кодировку держит, просто сам скрипт пишет в БД уже неправильную кодировку.
Правда уже созданные данные надо будет либо перекодировать (если они важны), либо просто очистить и писать уже правильно. Если конечно дело было в этом.
Roman Hirauka
Пётр Павлович, я Вас Петровичем назвал, извините. Автоматом написал, потому что тёска Ваш мой знакомый - Петрович rolleyes.gif
Admin
Цитата(RM Host @ 16.04.2009, 14:35) *

Такой вопрос: а когда в PMA заходите уже непосредственно в базу и видите её структуру, в колонке "Сравнение" тоже написано utf8_unicode_ci?

Нет, в колонках "Сравнение" у всех таблиц указано "cp1251_general_ci ". То же самое (cp1251_general_ci) указано и в каждом отдельном var_поле в структуре отдельных таблиц. Я вот как раз с этим сравнением никак разобраться не могу, что это такое и как оно работает.

И вот совсем не понимаю, почему на сайте, для которого в браузере указана UTF, отображаются записи из базы нормально, а в PMA, для которого тоже в браузере указана та же UTF, нормально отбражаются только собственные надписи PMA, а данные в базе - в кривом виде.
Admin
Цитата(Roman Hirauka @ 16.04.2009, 17:17) *

Пётр Павлович, я Вас Петровичем назвал, извините. Автоматом написал, потому что тёска Ваш мой знакомый - Петрович rolleyes.gif

Это систематическая ошибка, на неё кроме моего отца, уже никто внимания не обращает smile.gif.
rustelekom
потому что для сайта наверное прописано SET NAMES cp1251 ну а для PMA нет. На самом деле вот это вот: "... колонках "Сравнение" у всех таблиц указано "cp1251_general_ci ". одназначно указывает на то что сама база работает в кодировке cp1251 тогда как было бы удобнее для вас использовать utf8.

a) сделать дамп базы, проверить что там по русски все скачалось и что кодировка указана к примеру utf8
b ) прибить базу, создать ее заново из PMA с чарсетом utf8 и коллейшн utf8_general_ci
с ) обработать дамп (поменять определния чарсета и коллейшн с cp1251 на utf8)
d) закачать дамп в базу.

В завершении надо будет поискать где в скриптах указан SET NAMES и убрать его. После всех изменений все данные, база, сайт - все будет в utf8

PS. инструкций не даю потому что все равно все по месту надо смотреть.
Admin
Ну, инструкции то и не нужны, хотелось просто один раз понять все эти взаимосвязи.

Сейчас поборол, т.е. и на сайте и в pma кирилица выводится нормально. Что сделал - в скриптах на сайте указал для SET NAMES utf8. До этого там ничего указано не было. Вот после этого получилось.

Еще для базы в pma устанавливал через пункт Опции поле "Сравнение" в utf8_general_ci. И то же самое для таблицы. Для одного поля установил utf8_general_ci, а второе оставил как было - cp1251_general_ci. Сейчас в обоих полях новые данные отображаются одинаково нормально. Так для меня и осталось загадкой это COLLATE... Как оно работает, когда и на что влияет...



Цитата(ex-SavaHost @ 16.04.2009, 15:31) *

Я решал подобную проблему перекодировкой при помощи вот этой проги - http://sypex.net/encoding/

Спасибо, хорошая ссылка. Правда, задача сохранить и переконвертировать старые данные не была актуальной, база тестовая, с мусором пока. Но скриптик полезный.
eSupport.org.ua
Collate влияет на представление и сортировку содержимого полей
Admin
Цитата(eSupport.org.ua @ 17.04.2009, 09:33) *

Collate влияет на представление и сортировку содержимого полей

Т.е. несмотря на то, что сейчас у меня кириллица отображается везде нормально, для всех таблиц и полей все-таки лучше сменить заданную там cp1251_general_ci на utf8_general_ci ?
eSupport.org.ua
Второе правило админа гласит - работает не трогай
Но можно и поменять, если учтено первое правило wink.gif
Roman Hirauka
Цитата(eSupport.org.ua @ 17.04.2009, 14:55) *

Второе правило админа гласит - работает не трогай
Но можно и поменять, если учтено первое правило wink.gif

А первое какое? smile.gif

Не трогай, а то заработает? wink.gif
eSupport.org.ua
Первое правило гласит - всегда делать бекап smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.