Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Запускаю свой PHP-скрипт а у меня вместо кириллицы знаки вопросов при работе с MySQL (не распознаёт текст)

Владимир Бычков Профи (735), закрыт 15 лет назад
У меня установлен PHP и MySQL 5.0.
Пробовал менять кодировки - не помогает.
Есть выход - при соединении к БД использовать запрос "SET NAMES 'cp1251' ". Но неужели он единственный и после каждого соединения из PHP с MySQL нужно его использовать?
Код программы:
$Connection = mysql_connect("localhost", "root", "Password");
mysql_select_db("mydb", $Connection);
//$sql = "SET NAMES 'cp1251'";
//mysql_query($sql, $Connection);
$Result = mysql_query("SELECT * FROM Topics where SubTopic = 0 order by N",
$Connection);
while ($Row = mysql_fetch_array($Result))
{echo " ".$Row["TopicName"]."";
}
Я закоментировал это обращение к MySQL.
Вместо $Row["TopicName"] выдяёт знаки вопросов (в БД там строка на кириллице).
Вопрос: Можно ли обойтись без SET NAMES?
Заранее спасибо!
Лучший ответ
akazakou Знаток (269) 15 лет назад
Вопросики появляются, если кодировка таблицы не совпадает c кодировкой клиента.
Соответственно, в MySQL появились две новые команды set character_set_client и set character_set_results
Первая указывает, в какой кодировке приходят данные в базу, а вторая - в какой их выдавать. Поскольку чаще всего эти кодировки совпадают, то можно писать короче - один запрос "SET NAMES кодировка", который и устанавливает оба эти параметра.

В вашем коде я вижу комментированную строку с нужной командой SET NAMES. вот ее вам нужно выполнить 1 раз пред выполнением всех остальных запросов. Эта команда даст знать серверу, сто с вашим потоком данных, нужно будет производить манипуляции по перекодировке данных в необходимую вам кодировку.
Остальные ответы
Елена Злотникова Мастер (1164) 15 лет назад
Добрый день! Вам стоит зайти на специализированные форумы по PHP. Там скорее ответят
Serge Мыслитель (9914) 15 лет назад
варианты установить верную локаль на серваке либо задать кодировку БД в мускуле
Veon Мыслитель (5152) 15 лет назад
напишите в my.cfg строку init-connect="SET NAMES cp1251" в секцию mysqld
Open Source Мудрец (14829) 15 лет назад
так а что мешает сменить кодировку в БД?
Похожие вопросы