11:17

Неизвестный смайлик.
Здравствуйте.
Мне надо в одной программке 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'а они записаны в нечитабельном юникоде.

Понимаю, что информации, прямо скажем, не достаточно, но подскажите - в чем еще может быть причина?

Комментарии
05.11.2009 в 11:21

Торговец знаниями
При установке соединения с базой осуществляются вызовы
set character set
set names
?
05.11.2009 в 11:33

Неизвестный смайлик.
Ничего похожего я там не нашел.
Правда там была такая строчка:
function DB_escape_string($String){
return mysql_real_escape_string(htmlspecialchars($String, ENT_COMPAT, _('utf-8')));
}

Я тоже поменял на utf-8 (раньше стояла ISO-88.... какая-то)
05.11.2009 в 11:54

Торговец знаниями
Собственно идея такова: когда устанавливается соединение с БД, если параметры соединения (в плане кодировки) отличны от принятых по умолчанию (а по умолчанию обычно стоит как раз ISO-8859, емнимс), нужно указывать кодировку соединения. Обычно в php это делается следующей парой вызовов (я приведу пример для вашего случая):
mysql_query('set character set utf8',$dbc);
mysql_query('set names utf8',$dbc);
Где $dbc — ресурс соединения.
Только учитывайте, что как только вы добавите эту пару вызовов, у вас начнёт нормально всё вновь внесённое показываться в БД, но перестанет нормально показываться старое в браузере. Другой вопрос, что так правильнее и меньше проблем в дальнейшем возможно.
05.11.2009 в 12:01

Неизвестный смайлик.
Ну то что раньше было вбито не будет показываться верно - не страшно, там только тестовые вбиты.

Теперь вот, надо еще понять как, что, куда вбивать... Эх. Ну да ладно, спасибо, что подсказали.
05.11.2009 в 12:10

Неизвестный смайлик.
А вы не подскажите мануальчик по этому поводу? Желательно на русском, впрочем сойдет и английскийю
05.11.2009 в 12:56

Торговец знаниями
Паломник Оптимизма! Теперь вот, надо еще понять как, что, куда вбивать...
Отыщите фрагмент кода, отвечающий за установку соединения с БД, туда и добавлять.
А мануальчики — официальные mysql и php. :)
05.11.2009 в 13:04

Неизвестный смайлик.
tven ну у меня есть несколько файлов:
-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);
Которая впихивается куда нипопадя.
05.11.2009 в 13:16

Торговец знаниями
Паломник Оптимизма!, охохо. Жутковато. Ну, в общем случае надо дописывать после установки связи что-то в духе:
mysqli_query($db,'set names utf8');
mysqli_query($db,'set character set utf8');
Вообще, было бы неплохо посмотреть на содержимое ConnectDB.inc
05.11.2009 в 13:17

Торговец знаниями
Может в аську/джаббер (по вкусу) перейдём?