php + mysql - кодировки
2873
9
Дано:
внутренний (свой апач2) веб-проект пхп5+мускул, все работает в utf-8 (кодировка страниц и выдаваемый контент).
внешний веб-проект (у хостера) та же самая связка, с одним единственным уточнением - все в cp1251.
База и там и там в кодировке cp1251 хранится, но в локальном проекте после коннектом выполнятеся "set names utf8" и все замечательно по русски отображается/апдейтится, выдавая в браузер странички в utf8.

Есть задача "синхронизации" баз данный проектов - часть данных локального проекта должна select'ом выбиратся и insert'ом вставлятся на удаленный mysql-сервер. Сам код есть, и он работает, однако судя по всему удаленный (внешний) sql-сервер ожидает данных в кодировке cp1251.

Собственно проблема - как именно (желательно полную строчку привести) я должен подключатся к mysql-базе для того, чтобы общатся с ней в кодировке utf8?

код следующий в данный момент:

if(!($rem_db_link=mysql_connect(REMOTE_DB_HOST, REMOTE_DB_LOGIN, REMOTE_DB_PASSWORD)))
{
echo "<font color=\"red\"><b>Нет соединения с БД сайта</b></font>";
@ftp_quit($ftp_link);
return false;
}
if(!mysql_select_db(REMOTE_DB_NAME, $rem_db_link))
{
echo "<font color=\"red\"><b>Нет соединения с БД сайта</b></font>";
@mysql_close($rem_db_link);
@ftp_quit($ftp_link);
return false;
}

простое
mysql_query("set names utf8",$rem_db_link)
не помогает - такое чувство что на той стороне это просто игнорируется. Есть ли вариант при коннекте б БД из php указать кодировку?(наименьший гимор) Или кроме как перекодировки страниц локального проекта в cp1251 нет способов? (наибольший гимор)

Существуют ли функции (и какие) конвертации cp1251 в utf8 и обратно и как это сделать проще/правильнее? (средней гиморности вариант - "вручную" перекодировать запрос/результаты запроса).

В php не силен, просьба не пинать эсли это элементарность =)
Mad_Dollar
Перекодировать таблицы можно двумя запросами:
ALTER TABLE $table_name CONVERT TO CHARACTER SET binary
и
ALTER TABLE $table_name CONVERT TO CHARACTER SET utf8

Только у всех полей VARCHAR типа сменится на VARBINARY, это на некоторых функциях отразится может потом (типа locate или ucase).
А вообще-то SET NAMES UTF8 должен прекрасно отрабатывать.
Valico
перекодировать а удаленной базе неполучится - гимору ооочень много. ну чтож - будем разбиратся с провайдером видимо.
Mad_Dollar
А чего за провайдер? У меня были проблемы с одним примерно такого свойства.
Mad_Dollar
Беги оттэда:) Мало того, что цены конские, так еще и софт на виртуал-хосте глюкавый. И разбираться не хотят.
Мы год назад благополучно ушли к другому провайдеру, где цена в 10(!) раз была ниже за гораздо больший объем услуг.
Valico
Дык это время. Которого как обычно нет )) Вопрос уже поднялся конечно, но вопрос щас не в этом - нужно "подружить" базы и скрипты раньше, чем уедет хостинг, ибо это, как мне кажется будет еще не скоро, и это очень большое горе =))
Valico
посмотрите на предмет процедуры setlocale
quazare
я нуб в php - можно подробнее, как и куда ее вставить нужно?
Mad_Dollar
проблема решилась переконвертацией проекта в 1251 - у хостера мускул версии 3.23.50 не поддерживал локаль утф-8.