За последние 24 часа нас посетили 22635 программистов и 1280 роботов. Сейчас ищут 754 программиста ...

Вместо русских букв выводятся иероглифы

Тема в разделе "PHP для новичков", создана пользователем prudcky, 4 ноя 2012.

  1. prudcky

    prudcky Активный пользователь

    С нами с:
    4 ноя 2012
    Сообщения:
    11
    Симпатии:
    0
    У меня вот такая проблема. На локальном сервере "denwer" разместил сайт PHP, кодировка - utf-8, подключил БД. Символы, которые выводит БД отображаются правильно. Но русские буквы, которые подключены с помощью <? include("blocks/.....php");?> отображаются иероглифами.
    В чем дело?
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    хз. что это за «русские буквы, которые подключены с помощью <? include("blocks/.....php");?>». расшифруй пожалуйста.
     
  3. Gold Dragon

    Gold Dragon Активный пользователь

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    Кодировку проверь
     
  4. prudcky

    prudcky Активный пользователь

    С нами с:
    4 ноя 2012
    Сообщения:
    11
    Симпатии:
    0
    кодировка в норме, везде utf-8, кстати пробовал на windows-1251 - один хрен. А по поводу - <? include("blocks/.....php");?> -это php код, который ссылается на документ php с текстом, например - "добро пожаловать", а в результате - разрабоС
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Тыкс, по твоему фрагменту диагноз такой: фрагмент в UTF-8, а браузер так не считает. Загляни в заголовки ответа. Ну или принудительно сделай в самом начале, до первого текста или echo:

    header('Content-type: text/html; charset=utf-8');

    Добавлено спустя 2 минуты 55 секунд:
    Вообще у denwer была (видимо и осталась) глупая заморочка с чарсетом по умолчанию. Он считал, что сайты по умолчанию будут в 1251.
    Поищи в конфигурации денвера строку "AddDefaultCharset" и закомментируй ее, затем перезапусти сервер.
     
  6. Encoder

    Encoder Активный пользователь

    С нами с:
    1 ноя 2012
    Сообщения:
    32
    Симпатии:
    0
    Я решаю проблему так:

    Открываю блокнот пишу вот такую строчку:
    AddDefaultCharset utf-8
    Потом сохраняю под именем .htaccess в папку с сайтом, ну например denwer/home/test1.ru/www .
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    в самом начале было написано:
    скорее наоборот, ВСЁ неправильно. в базу попал испорченный текст, на страницу он (в результате повторной неправильной перекодировки) выводится правдоподобно ))) хотя пара букв обязательно портится, только это не сразу заметно.

    Мини-пособие по наведению порядка.
    1. понять как браузер определяет кодировку страницы — наивысший приоритет у http-заголовка, затем, если не указано, то тег meta charset

    2. убедиться, что с сервера заголовки приходят правильные. можно через "Информация о странице". если неправильные — колдовать с конфигурацией сервера. AddDefaultCharset — или добавить для этого сайта или наоборот убрать неправильную для всего сервера

    3. понять, что кодировка в базе и кодировка на странице могут совпадать, а могут не совпадать. но всё будет хорошо, если mysql будет в курсе про то, какую кодировку мы хотим иметь на странице. он сам всё перекодирует на лету. читать про "set names"

    4. если включаем set names и видим плохой результат, это не сейчас мы делаем ошибку, это мы видим ошибки из прошлого — данные уже записались неправильно.

    удачи!
     
  8. Gold Dragon

    Gold Dragon Активный пользователь

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    Всё правильно.. сервер по умолчанию отдаёт кодировку отличную от utf-8

    PS
    советую всё такие поменять денвер на openServer.. Намного интереснее
     
  9. prudcky

    prudcky Активный пользователь

    С нами с:
    4 ноя 2012
    Сообщения:
    11
    Симпатии:
    0
    Всем спасибо. Создал новый сайт, скопировал туда все содержимое "проблемного" сайта и все стало так как надо ) ХЗ в чем была проблема, я думаю что denwer вые.....)
     
  10. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    чувак, научись уже читать, а то будешь постоянно на одни и те же грабли наступать.
     
  11. Gold Dragon

    Gold Dragon Активный пользователь

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    Это руки такие... любой сервер не будет думать за тебя..
     
  12. mackarov321

    mackarov321 Новичок

    С нами с:
    19 окт 2014
    Сообщения:
    1
    Симпатии:
    0
    Надо сделать вот такой запрос после соединения с БД:
    mysql_query("SET NAMES cp1251");
    И все получится!
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    в упор не видят)
     
  14. Chugunos

    Chugunos Новичок

    С нами с:
    21 май 2015
    Сообщения:
    1
    Симпатии:
    0
    Спасибо мужики! Чтобы я без вас делал!!!!