Ответ
Misha v.3 12.03.2015 01:46
и чего вы ожидали?
данные из формы приходят в utf-8.
парсер отдаёт их mysql драйверу как есть (в utf-8).
но опцией ?charset=cp1251 (и mysql_set_charset('cp1251',$db)) вы говорите mysql-ю, что данные приходят в 1251.
mysql вас слушает и перекодирует пришедшие данные из 1251 в utf8 и сохраняет в БД.
очевидно, что это перекодирование средствами mysql-я лишнее и данные при этом перекодировании с большой вероятностью поломаются.
сейчас в БД у вас всё плохо: данные хранятся с лишним перекодированием. надо их достать (dump), перекодировать из utf-8 в 1251 и подложить обратно (для начала лучше загрузить их в другую БД, чтобы потестировать). только после этого можно избавиться от указания ?charset=cp1251 и mysql_set_charset('cp1251',$db);
причём надо разбираться, всё ли данные лишний раз перекодированы или нет. и перекодировать обратно только то, что "кривое".