Изменение кодировки mysql

Эдди

Новичок
14 лет сайт работал на кодировке 1251.
Сейчас наконец я взялся за редизайн сайта. С нуля. На другом сервере.
Кодировка utf-8.
Скопировал БД mysql на новый сервер.
Однако выводятся только ?????????.

По кодировкам mysql я профан, ну не было до них дела.
Знаю, что по умолчанию, вроде, в mysql должна быть кодировка utf-8.
Но у меня, кажется, 1251.
Можно ли перекодировать базу данных?

Или вообще, с чего начинать решать проблему?

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

Эдди

Новичок
Спасибо. Кажется, здесь есть решение моей проблемы.

А можно тупо поменять кодировку каждой таблицы в phpmyadmin?
Ничем не чревато?
Ну, кроме того, что знаний у меня не прибавится. :)
 

Фанат

oncle terrible
Команда форума
Мне кажется, что это не нужно.
мускуль может работать с любой кодировкой, поэтому нет никакой нужды менять её.
Тем более, что пхп код-то небось останется тот же самый, под утф не заточеный?
 

Эдди

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

Эдди

Новичок
В общем, пока решил так:
В функцию подключения к БД тупо поставил строку mysql_query("SET NAMES utf8");
Все работает. Баста!
В БД кодировку не поменял.
Как-нибудь потом попробую my.cnf отредактировать.
 

Фанат

oncle terrible
Команда форума
Мде...
Ну, посмотрим, как будет сортировка работать.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Мде...
Ну, посмотрим, как будет сортировка работать.
Нормально будет. Он кстати, вполне правильно сделал — он говорит мускулу, что хочет получать данные в UTF-8, и его не волнует, в какой кодировке они хранятся. А сортировка по кириллице у cp1251 — правильная. Это не эффективный способ (ибо будет конвертация данных между кодировками при отдаче/получении данных) но с точки зрения логики — правильный. (А в случае, если эту базу, например, использует еще другое какое-нибудь приложение, которое туда пишет именно cp1251 — единственно правильный)
 

Эдди

Новичок
Нормально будет. Он кстати, вполне правильно сделал — он говорит мускулу, что хочет получать данные в UTF-8, и его не волнует, в какой кодировке они хранятся. А сортировка по кириллице у cp1251 — правильная. Это не эффективный способ (ибо будет конвертация данных между кодировками при отдаче/получении данных) но с точки зрения логики — правильный. (А в случае, если эту базу, например, использует еще другое какое-нибудь приложение, которое туда пишет именно cp1251 — единственно правильный)
Когда новый сайт закончу делать, не лучше ли перекодировать таблицы?
В дампе из прежней базы изменить тип кодировки.
Базу другие проекты не используют. Только этот.
Или это напрасная трата времени?
 

Ragazzo

TDD interested
Эдди
использовать utf-8 не напрасная трата времени, другое дело будет ли время чтобы перекодировать) многие так и делают же set names и забыли до лучших времен :D
 

Фанат

oncle terrible
Команда форума
Да не, это понятно.
Я просто в уме неправильно интерпретировал эти вопросы.
 

Эдди

Новичок
Эдди
использовать utf-8 не напрасная трата времени, другое дело будет ли время чтобы перекодировать) многие так и делают же set names и забыли до лучших времен :D
Там всего пара сотен таблиц.
Копипаст в дампе - за 10 минут сделаю.
Если уж полную реконструкцию делаю, то с самого начала хочется сделать по уму.
 

Эдди

Новичок
Чтобы не плодить темы, про setlocal тоже здесь спрошу.

При кодировке 1251 ставил setlocale(LC_ALL,'ru_RU.CP1251');
strtupper и обратная работали нормально.
А под utf-8 что-то ни одна не работает?
В чем причина?
 
Сверху