Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ох уж эта кодировка
 
 автор: Рафик   (02.07.2007 в 11:56)   письмо автору
 
 

Первый раз сталкиваюсь с проблемой кодировки.
Создал таблицу на сервере тектовые поля задал кодировку cp1251_general_cs
Для всех таблиц задал эту же кодировку и общую тоже.
Код блока выведения информации выглядит так:


$result = $conn->query("SELECT * FROM treatment ORDER BY id LIMIT {$position},{$show_count}");
if (empty($result)) {exit("нет данных для отображения!");}
print "<TABLE BORDER=1 BORDERCOLOR=#8080C0 ALIGN=center>\n";
print "<TR><TH>№</TH><TH>Имя Фамилия</TH><TH width=10>возраст</TH><TH>профессия</TH><TH>болезнь</TH><TH width=10>длит.<br>заб</TH><TH>средство леч</TH><TH width=5>длит.<br>леч.</TH><TH>результат</TH><TH>комментарии</TH><TH>выбор</TH></TR>";
while ($row = $result->fetch_row()) {
    print "<TR><TD>$row[0]</TD><TD>$row[1]</TD><TD>$row[2] л.</TD><TD>$row[3]</TD><TD>$row[4]</TD><TD>$row[5]</TD><TD>$row[6]</TD><TD>$row[7]</TD><TD>$row[8]</TD><TD title='$row[9]'>".substr($row[9],0,15);
    if (strlen($row[9]) > 15)
    print " ...</TD>"; else print "</TD>";
    print "<TD><a href='addtobase.php?num=$row[0]&public=yes'>add</a> || <a href='addtobase.php?num=$row[0]&public=no'>render</a></TD></TR>\n";
    }
print "</TABLE>\n";


Ошибок нет, а русские буквы вопросиками отрисовывает ????????
Кодировка формы отправки данных - windows-1251.
Сама страница тоже в этой кодировке.
Пробовал:

$conn->query("SET names 'cp1251'");

или

header("Content-Type: text/html; charset=windows-1251");


Никак не хочет.

Что вы думаете?

   
 
 автор: Trianon   (02.07.2007 в 12:25)   письмо автору
 
   для: Рафик   (02.07.2007 в 11:56)
 

Думаю, что перед созданием таблиц в БД, Вы забыли указать умалчиваемую кодировку базы.
Теперь после исправления кодировки, придется создавать заново. Как минимум таблицы.

ALTER DATABASE `mybase` 
  DEFAULT CHARACTER SET cp1251 
  COLLATE cp1251_general_ci 

   
 
 автор: Рафик   (04.07.2007 в 00:13)   письмо автору
 
   для: Trianon   (02.07.2007 в 12:25)
 

Не помогло, я указал умалчиваемую кодировку базы, потом пересоздал таблицы, все равно вопросики не перестают меня преследовать!

   
 
 автор: Trianon   (04.07.2007 в 00:51)   письмо автору
 
   для: Рафик   (04.07.2007 в 00:13)
 

Тогда значит , как Вы выразились, Вы всё же перестали пробовать

$conn->query("SET names 'cp1251'"); 

Это надо делать постоянно. Сразу после mysql_connect()

   
 
 автор: Рафик   (04.07.2007 в 22:49)   письмо автору
 
   для: Trianon   (04.07.2007 в 00:51)
 

Спасибо, Trianon выручил.
В файле addtobase три ветви условия, а $conn->query("SET names 'cp1251'"); была только в одной ветви. Я вынес

mysql_connect() ;  $conn->query("SET names 'cp1251'");
в начало
Все потекло как надо, благодарю покорно!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования