Неизвестный смайлик.
Здравствуйте.
Мне надо в одной программке weberp сделать так, чтобы принималась кирилица. Эта программа стоит на сервере под опен-суси и сама программа написана на пхп, а в качестве базы данных использует mysql. Так как я, прямо скажем, совсем не разбираюсь в вопросе прошу совета.
Ситуация такова:
1) Поправил в heder'е "Content-Type" content="text/html; charset=' . _('utf-8')
2) Поправил во всех 107 таблицах на utf8
3) Поменял в my.cnf конфиге mysql строчку character-set-server=utf8
4) Поменял в браузере на utf-8 кодировку.
После всех этих замен я теперь могу записывать данные в таблицы на русском языке (через веб-интерфейс), потом, после обновления они ко мне возвращаются опять же на русском. Но вот в самой базе mysql'а они записаны в нечитабельном юникоде.
Понимаю, что информации, прямо скажем, не достаточно, но подскажите - в чем еще может быть причина?
Мне надо в одной программке weberp сделать так, чтобы принималась кирилица. Эта программа стоит на сервере под опен-суси и сама программа написана на пхп, а в качестве базы данных использует mysql. Так как я, прямо скажем, совсем не разбираюсь в вопросе прошу совета.
Ситуация такова:
1) Поправил в heder'е "Content-Type" content="text/html; charset=' . _('utf-8')
2) Поправил во всех 107 таблицах на utf8
3) Поменял в my.cnf конфиге mysql строчку character-set-server=utf8
4) Поменял в браузере на utf-8 кодировку.
После всех этих замен я теперь могу записывать данные в таблицы на русском языке (через веб-интерфейс), потом, после обновления они ко мне возвращаются опять же на русском. Но вот в самой базе mysql'а они записаны в нечитабельном юникоде.
Понимаю, что информации, прямо скажем, не достаточно, но подскажите - в чем еще может быть причина?
set character set
set names
?
Правда там была такая строчка:
function DB_escape_string($String){
return mysql_real_escape_string(htmlspecialchars($String, ENT_COMPAT, _('utf-8')));
}
Я тоже поменял на utf-8 (раньше стояла ISO-88.... какая-то)
mysql_query('set character set utf8',$dbc);
mysql_query('set names utf8',$dbc);
Где $dbc — ресурс соединения.
Только учитывайте, что как только вы добавите эту пару вызовов, у вас начнёт нормально всё вновь внесённое показываться в БД, но перестанет нормально показываться старое в браузере. Другой вопрос, что так правильнее и меньше проблем в дальнейшем возможно.
Теперь вот, надо еще понять как, что, куда вбивать... Эх. Ну да ладно, спасибо, что подсказали.
Отыщите фрагмент кода, отвечающий за установку соединения с БД, туда и добавлять.
А мануальчики — официальные mysql и php.
-rw-rw-r-- 1 vent users 1006 2009-11-05 20:09 ConnectDB.inc
-rw-rw-r-- 1 vent users 5264 2009-11-05 18:39 ConnectDB_mysqli.inc
-rw-rw-r-- 1 vent users 4683 2009-11-05 20:11 ConnectDB_mysql.inc
-rw-rw-r-- 1 vent users 4168 2009-11-05 18:39 ConnectDB_postgres.inc
Которые, как я подозреваю, относятся как раз к этой установке связи.
А сама установка, описывается одной строчкой: $db = mysqli_connect($host , $dbuser, $dbpassword,$_SESSION['DatabaseName'], $mysqlport);
Которая впихивается куда нипопадя.
mysqli_query($db,'set names utf8');
mysqli_query($db,'set character set utf8');
Вообще, было бы неплохо посмотреть на содержимое ConnectDB.inc