За последние 24 часа нас посетили 20956 программистов и 1107 роботов. Сейчас ищут 429 программистов ...

Поломка русского текста в php файлах

Тема в разделе "Прочие вопросы по PHP", создана пользователем L1nker, 8 июл 2022.

  1. L1nker

    L1nker Новичок

    С нами с:
    8 июл 2022
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте. Хочется знать почему php скрипты на сервере сайта перестали отображать буквы русского алфавита. Весь русский текст поменялся на "?", пример на скрине. Обьясните пожалуйста с чем это связанно.
     

    Вложения:

    • image (4).png
      image (4).png
      Размер файла:
      44,8 КБ
      Просмотров:
      6
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    С настройками твоего редактора кода, скорее всего. Сам текст навряд ли перекодировался, изменилось представление редактора о том, в какой он кодировке.
     
  3. L1nker

    L1nker Новичок

    С нами с:
    8 июл 2022
    Сообщения:
    3
    Симпатии:
    0
    Это редактор на my.infobox, в админке сайта. Это из за него возникла эта проблема?
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    Это название ни о чем не говорит.

    Раз речь об отображении в браузере, то есть несколько факторов, которые могут повлиять. Главный — заголовок Content-type. Он может содержать [ ошибочную? ] информацию о кодировке даннных.
    Screenshot 2022-07-18 at 10.01.52.png
    Может оказаться что твои текстовые данные в кодировке windows-1251, а браузер их воспринимает как utf-8, потому что такой заголовок установлен. Или наоборот.

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

    Я когда-то попытался объяснить это подоробно, почитай https://php.ru/forum/threads/pro-kodirovku-i-bazu.56793/

    Что конкретно не так в твоём случае, можешь выяснить только ты.
    --- Добавлено ---
    P.S. Если текст отображался правильно, но перестал — на том же хостинге без изменений с твоей стороны — рискну предположить что обновилос ПО на сервере и при этом сменилась настройка кодировки либо на веб-сервере, либо в базе. Поэтому надо задавать кодировку явно всегда, а не полагаться на какие-то установки по-умолчанию. Про это я писал по ссылке выше.