• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблема с выводом инофрмации

  • Автор темы gugi
  • Дата начала
G

gugi

Соспна сабж...

Делаю выборку с таблицы, вывожу данные, но вместо русских слов, я вижу знаки вопроса... кодировка в тэйблах cp1251. В чем может быть проблема?

Код:
<?php
$link = mysql_connect("localhost","root","");
if(!$link) {
trigger_error("Ошибка подключения к серверу", E_USER_ERROR);
}
mysql_select_db("psProds");
$result = mysql_query("SELECT GrpID, GrpName FROM r_groups");
if(!$result) {
trigger_error("Невозможно выполнить указанный запрос",E_USER_ERROR);
}
echo "<html>";
echo "<head>";
echo "<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'/>";
echo "<link rel='stylesheet' type='text/css' href='./theme_right.css.php'/>";
echo "</head>";
echo "<body>";
echo "<TABLE cellspacing=1 cellpadding=0><Tr><Th><fieldset>Имя</fieldset></Th><Th><fieldset>Пароль</fieldset></Th></Tr>";
$i=0;
while($row = mysql_fetch_array($result)) {
if (($i%2)==0){
echo "<TR>";
echo "<Td bgcolor=#E5E5E5><fieldset>{$row['GrpID']}</fieldset></Td><Td bgcolor=#E5E5E5><fieldset>{$row['GrpName']}</fieldset></Td>";
echo "</TR>";
}
else {
echo "<TR>";
echo "<Td bgcolor=#b8b8b8><fieldset>{$row['GrpID']}</fieldset></Td><Td bgcolor=#b8b8b8><fieldset>{$row['GrpName']}</fieldset></Td>";
echo "</TR>";
}
$i++;
}
echo "</pdflayout_table></TABLE>";
mysql_close($link);
echo "</body>";
echo "</html>";
?>
 
G

Gisma

почти наверняка, дефолтовая кодировка бд отлична от cp1251.
Для корректировки этого смертельного случая есть несколько решений
1. Простое : если MySQL > 4.1 = SET NAME `cp1251`
2. Сложное (применять в обратных случаях): редактировать конфы апача, изменять работу скриптов, перекодировать их в UTF и т.д. и т.п. :)
Может быть и такая задница, что твой апач просто буянит впихни в .htaccess такое лекарство
AddDefaultCharset windows-1251
 
G

Guest

Gisma прав, у тебя не подружились кодировки клиента и сервера. Выход проще не придумаешь:
Код:
//Сразу после mysql_connect лепишь запрос:
$DB_CONNECT=@mysql_connect(DBServer,DBUName,DBPass);
@mysql_select_db(DBName);
@mysql_query("SET CHARACTER SET cp1251_koi8");//<<<<Вот эту вот строчку
Рассказывает серверу, в какой кодировке писать и отдавать данные.
cp1251_koi8 - пока единственное значение этого параметра и придумано специально для русских.
Для меня лишний повод поматериться, что русский не на латинице (все не как у людей).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!