База UTF8 <-> клиент UTF8 - проблема с двойной кодировкой

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 - грабли (
 

PartizaneN

I speak PHP
Re: База UTF8 <-> клиент UTF8 - проблема с двойной кодировкой

Автор оригинала: DevianT
База читабельна при кодировке клиента cp1251 и не читабельна при кодировке utf8.
плохо сконвертил имхо..
 

DevianT

Новичок
Re: Re: База UTF8 <-> клиент UTF8 - проблема с двойной кодировкой

Автор оригинала: PartizaneN
плохо сконвертил имхо..
Исключено. Я новую базу создал специально для тестов. Создал таблицу и вставил несколько записей через phpMyAdmin, проверил корректность и им и по дампу. Проблема проявляется если писать в базу через скрипт-форму оперой или IE, при установленном чарсете utf8 (контент тайп соответственно utf-8).
 

440hz

php.ru
DevianT
"SET NAMES UTF8"

dev(root):/home/440hz#>cat /var/db/mysql/my.cnf | grep utf
character_set_client = utf8
character-set-server = utf8
default-character-set = utf8
default-collation = utf8_general_ci
collation-server = utf8_general_ci
 

DevianT

Новичок
Автор оригинала: 440hz
"SET NAMES UTF8"

dev(root):/home/440hz#>cat /var/db/mysql/my.cnf | grep utf
character_set_client = utf8
character-set-server = utf8
default-character-set = utf8
default-collation = utf8_general_ci
collation-server = utf8_general_ci
Дополнил конфиг, те же грабли. При чтении нормальных данных Р и Э бъются, запись не проходит. Тестирую на win32, это может влиять?
 
Сверху