Страница 1 из 1

Кирилица при записи в базу

Добавлено: 14 окт 2012, 12:37
readonly
приветствую, о отцы!
недавно я встал на стезю изучения PHP, посему вопрос мой будет глуп и недостоин вашей мудрости. Я же униженно и смиренно приму все оскорбления в свой адрес (которыми изобилует сей дивный форум) не ропща на судьбу. Ибо не ставлю под сомнение мудрость вашу и приму суровость за благо.

А горе у меня такое: при записи в базу через веб-форму кирилица не пишется в базу и при выборке в браузер вообще не выводится (даже кракозябрами). См на скрине HeidiSQL
http://i44.fastpic.ru/big/2012/1014/66/ ... 616266.png
нижняя строка - это как раз инсерт через веб-форму. при этом латиница пишется, ошибок нет
верхние строки с кирилицей я внес инсертом через HeidiSQL, при этом кирилица пишется и выводится в браузер.
При коннекте к базе я кодировку не ставлю. Насколько я понимаю, при этом должна использоваться дефолтная ЮТФ-8. В самих инсертах, насколько я понял, тоже кодировка не указывается http://phpclub.ru/mysql/doc/insert-select.html

Что я делаю не так?

примечания
1. настройки Open Server не менял
2. версия Open Server 4.5.9
3. в конфиги мускула не лазил
4. в документации Open Server свою проблему не нашел
5. через поиск по форуму не нашел похожих вопросов

Добавлено: 14 окт 2012, 12:48
Максим
1) Ваша проблема не имеет вообще никакого отношения к Open Server и ничего в настройках менять не нужно.

2) Создайте базу в кодировке utf8_general_ci

3) Не используйте при подключении к базе логин root (это обязательно, иначе кодировка всегда будет latin1)

4) После подключения к базе делайте к ней следующие запросы (установка кодировки соединения):
mysql_query('set names utf8');
mysql_query('set character set utf8');
mysql_query('set character_set_client=utf8');
mysql_query('set character_set_results=utf8');
mysql_query('set character_set_connection=utf8');
mysql_query('set character_set_database=utf8');
mysql_query('set character_set_server=utf8');
5) При выводе информации на веб-страницу используйте кодировку utf-8 на самой странице, иначе будут кракозяблы.

P.S. Писать идиотизм про судьбу, мудрость и прочее в следующих темах не нужно, иначе нарветесь на бан. Пишите пожалуйста строго по делу.

Добавлено: 14 окт 2012, 15:45
readonly
Максим, это только новые ошибки вызвало
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'127.0.0.1' (using password: NO) in F:\OpenServer\domains\develop.ru\lessons\set_charset.php on line 5

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in F:\OpenServer\domains\develop.ru\lessons\set_charset.php on line 5
логин/пароль к базе точно правильные, юзер имеет все галки кроме супер. пробовал под дефолтными mysql:mysql - те же ошибки появляются.
При выводе информации на веб-страницу используйте кодировку utf-8 на самой странице, иначе будут кракозяблы.
да, в браузере при выводе использую utf-8

Добавлено: 14 окт 2012, 16:17
Максим
Я вам показал решение проблемы, ваш вопрос с кодировкой предоставленная инструкция решает. Ваши действия, в плане вставить код куда надо и как надо, приводят к вышеуказанным ошибкам, а не мои инструкции.

Вы видимо вставили код ДО соединения с базой, вот PHP и пытается подключится со стандартными параметрами. Или же в вашем скрипте нужно использовать линк на подключение, тогда вам нужно подставить его в каждый вызов функции, типа:
вместо
mysql_query('set character_set_client=utf8');
делать
mysql_query('set character_set_client=utf8',$link);

Добавлено: 14 окт 2012, 18:16
readonly
Нет, так тоже не работает. Причет в Убунте тот же самый код работает и нет ошибок. В любом случае проблему понял и буду разбираться.
Благодарю за помощь!