Духовность™
Продвинутый новичок
Привет.
Интересует вопрос по кодировкам в mysql, доки читал, но остались вопросы.
Имеем 5 mysql.
Для базы я сделал
В начале инициализации БД стоит mysql_set_charset('SET NAMES utf8').
Данные в скрипт приходят в UTF-8, но хранятся и записываются в базу как cp1251, ведь на таблицах стоит cp1251_general_ci. Так по идее? Идем дальше, цитируем вики:
POST запрос идёт в UTF8:
На таблице charset и collation = cp1251_general_ci
1. отключил SET NAMES utf8 и данные в базу записались как UTF-8.
Не смотря на то, что таблица настроена на cp1251_general_ci
2. включил SET NAMES utf8 и данные в базу записались как cp1251.
Почему в первом не произошло преобразование и пришедшие из запроса данные в UTF не преобразовались в cp1251?
Почему во втором случае данные в UTF8 записались как cp1251?
Интересует вопрос по кодировкам в mysql, доки читал, но остались вопросы.
Имеем 5 mysql.
Для базы я сделал
Таблицы и столбцы остались со старым collation и charset -- cp1251_general_ciALTER DATABASE `mybase` CHARACTER SET utf8;
В начале инициализации БД стоит mysql_set_charset('SET NAMES utf8').
Данные в скрипт приходят в UTF-8, но хранятся и записываются в базу как cp1251, ведь на таблицах стоит cp1251_general_ci. Так по идее? Идем дальше, цитируем вики:
Тут мне не понятно. Если я делаю SET NAMES utf8, то "информация пришедшая от клиента" должна сохраняться как UTF8, но если таблица имеет CHARSET=cp1251 то character_set_connection фактически игнорируется? Правильно я понимаю? Так вот, я провел два эксперимента:SET NAMES эквивалентна этим трем командам:
Переменная character_set_client устанавливает кодировку данных отправляемых от клиента
character_set_results устанавливает кодировку данных отправляемых клиенту
character_set_connection устанавливает кодировку, в которую преобразуется информация пришедшая от клиента, перед выполнением запроса на сервере.
POST запрос идёт в UTF8:
На таблице charset и collation = cp1251_general_ci
1. отключил SET NAMES utf8 и данные в базу записались как UTF-8.
Не смотря на то, что таблица настроена на cp1251_general_ci
2. включил SET NAMES utf8 и данные в базу записались как cp1251.
Почему в первом не произошло преобразование и пришедшие из запроса данные в UTF не преобразовались в cp1251?
Почему во втором случае данные в UTF8 записались как cp1251?