За последние 24 часа нас посетили 16479 программистов и 1551 робот. Сейчас ищут 2113 программистов ...

Скрипт выводит из базы вопросительные знаки, хотя везде выставлено 1251

Тема в разделе "MySQL", создана пользователем begin2, 10 июл 2016.

  1. begin2

    begin2 Новичок

    С нами с:
    10 июл 2016
    Сообщения:
    1
    Симпатии:
    0
    Есть скрипт, который берет данные из базы. Но возникла проблема с вопросительными знаками.
    Знаю, что этот вопрос задают все новички. Но в скрипте соблюдены все правила, и все равно вопросительные знаки.

    Что сделано, чтобы это исправить:
    1. кодировка базы cp1251_general_ci
    2. кодировка (сравнение) таблицы cp1251_general_ci
    3. проверен контент таблицы: русские надписи читаются нормально, сортировка происходит логично, как нужно
    4. скрипт сохранен в программе Notepad++ в кодировке ANSI
    5. в скрипте отправляется заголовок header("Content-Type: text/html; charset=windows-1251
    6. в скрипте указан тег <meta http-equiv="Content-Type" content="text/html;charset=windows-1251">
    И все равно выводятся вопросительные знаки.
    Добавил строку mysql_query("SET NAMES 'cp1251'"); - стали выводится вообще пустые строки.
    Сейчас эту строку закоментил, вернулись вопросительные знаки.

    Код (Text):
    1. <?php header("Content-Type: text/html; charset=windows-1251"); ?>
    2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml">
    4. <head>
    5. <meta http-equiv="Content-Type" content="text/html;charset=windows-1251">
    6. </head>
    7. <body>
    8. <?php
    9.  
    10. //параметры подключения к базе
    11. $db_server='localhost';
    12. $db_user='user';
    13. $db_pas='test';
    14. $db_name='dbname';
    15.  
    16. //подключаемся к базе и устанавливаем кодировку
    17. $db=mysql_connect($db_server, $db_user, $db_pas) or die ('сервер перегружен. обновите страницу');
    18. $res=mysql_select_db($db_name) or die ();
    19. //mysql_query("SET NAMES 'cp1251'");
    20.  
    21. $query="select * from `post` where `id`=1";
    22. $result=mysql_query($query, $db) or die(mysql_error());
    23. $res=mysql_fetch_array($result);
    24.  
    25. $name=htmlspecialchars($res['name']);
    26. echo $name;
    27.  
    28.  
    29. echo "</body></html>"
    30. ?>
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Почему не в utf-8? mysql уже удалили, лучше mysqli или pdo используй. Очень старая версия HTML объявлена и ещё XHTML.
    Может написать в тех поддержку хостинга почему ты всё верно прописал, а данные всё равно порченные?