DevianT
Новичок
База UTF8 <-> клиент UTF8 - проблема с двойной кодировкой
mySql 5.0.16-nt - дефолтная кодировка utf8
php5.x
apache 2.x
Возникла необходимость отдавать клиентам базу в кодировке utf8 (раньше все было в cp1251). База сконвертилась нормально, это подтверждается дампами и phpMyAdmin. База читабельна при кодировке клиента cp1251 и не читабельна при кодировке utf8.
Теперь по порядку:
Создал тестовую базу в utf8, заполнил тестовыми данными через phpMyAdmin. Пытаюсь читать. Если ставлю кодировку соединения cp1251 (set character set cp1251), то все читается (сервер конвертит utf8 в cp1251 и отдает клиенту) и пишется (клиент отдает серверу cp1251, сервер конвертит в utf8 и пишет в базу). Все нормально и результаты так же видны через phpMyAdmin.
Если установить кодировку соединения utf8 (set character set utf8), то из базы читается битый utf8 (русские буквы Р и Э заменяются на Ъ или квадратики). Запись в базу не проходит вообще (update делает поле пустым).
Есть ли способ это вылечить?
Еще наблюдение. Если не делать set character set (client_encoding=latin1_swedish_cp), то в базу пишется _два раза_ конвертированный в utf8 контент. Он же читается, но с битыми буквами Р и Э.
в конфиге mySql
default-character-set=utf8
character-set-server=utf8
- стоят
P.S. Фак читал уже, с cp1251 все настроил, однако с отдачей utf8 - грабли (
mySql 5.0.16-nt - дефолтная кодировка utf8
php5.x
apache 2.x
Возникла необходимость отдавать клиентам базу в кодировке utf8 (раньше все было в cp1251). База сконвертилась нормально, это подтверждается дампами и phpMyAdmin. База читабельна при кодировке клиента cp1251 и не читабельна при кодировке utf8.
Теперь по порядку:
Создал тестовую базу в utf8, заполнил тестовыми данными через phpMyAdmin. Пытаюсь читать. Если ставлю кодировку соединения cp1251 (set character set cp1251), то все читается (сервер конвертит utf8 в cp1251 и отдает клиенту) и пишется (клиент отдает серверу cp1251, сервер конвертит в utf8 и пишет в базу). Все нормально и результаты так же видны через phpMyAdmin.
Если установить кодировку соединения utf8 (set character set utf8), то из базы читается битый utf8 (русские буквы Р и Э заменяются на Ъ или квадратики). Запись в базу не проходит вообще (update делает поле пустым).
Есть ли способ это вылечить?
Еще наблюдение. Если не делать set character set (client_encoding=latin1_swedish_cp), то в базу пишется _два раза_ конвертированный в utf8 контент. Он же читается, но с битыми буквами Р и Э.
в конфиге mySql
default-character-set=utf8
character-set-server=utf8
- стоят
P.S. Фак читал уже, с cp1251 все настроил, однако с отдачей utf8 - грабли (