Форум ломается при использовании кодировки Windows-1251 (кириллица/русский)

Похоже, что форумы Discourse не загружаются, если кодировка символов установлена в Windows-1251 для русского языка.

Для воспроизведения установите кодировку символов в «Кириллица (Windows-1251)» и откройте главную страницу форума. Вы увидите пустую страницу. В консоли появятся сообщения об ошибке, похожие на следующие:

Uncaught SyntaxError: Invalid regular expression: 
/^[^A-Za-zГЂ-ÖØ-Г¶Гё-КёМЂ-Цђа Ђ-бїїв°Ђ-п¬њп·ѕ-п№Їп»Ѕ-пїї]*[Ц‘-Яїп¬ќ-п·Ѕп№°-п»ј]/: 
Range out of order in character class
    at new RegExp (<anonymous>)

(Я пробовал это только на двух форумах Discourse — Meta Discourse и моём основном форуме.)

Зачем ты так делаешь? Discourse использует UTF-8, и это работает и для русского языка.

Я бы сам этого не делал. :slight_smile:

Один пользователь из России столкнулся с пустой страницей. Потребовалось несколько часов, чтобы найти причину, и я не смог воспроизвести проблему, пока не установил кодировку своего браузера на Windows-1251.

Мне интересно, сталкиваются ли другие русскоязычные пользователи с пустыми страницами. Судя по всему, это настроено на его компьютере на уровне операционной системы (Windows), и сейчас нет простого способа изменить кодировку символов в браузере без ручной настройки. Функции автоматического определения кодировки в браузерах работают не очень хорошо. Мы пробовали Chrome и Firefox.

У нас работают несколько форумов в России. Проблем нет, если, как указано выше, используется UTF-8. Мы не экспериментировали и не устанавливали кодировку Windows-1251. Зачем? UTF-8 работает для всего.

На любом из форумов не было пустой страницы. Браузер не переключается на Windows-1251.

Я попробовал в трёх браузерах принудительно установить Windows-1251. Если форум в UTF-8, мы получаем только неверную кодировку. Пустой страницы не наблюдается.

cp1251 ещё не умер, поэтому меня не удивляет, что некоторые пользователи до сих пор используют браузер, в котором по умолчанию установлена эта кодировка.

По состоянию на этот месяц (16.12.19) чуть более 11 % сайтов в зоне .ru используют windows-1251.

Я не совсем понимаю, почему вы его там не видите. Я использовал этот плагин для браузера в Chromium для тестирования. (Похоже, что Firefox отключает меню выбора кодировки на некоторых сайтах.)

Я только что попробовал с третьим форумом Discourse, и он тоже не загружается.

Не знаю, почему у того пользователя ОС настроена на Windows-1251. Я постараюсь выяснить, как часто это происходит.

Интересно, посмотрите, пожалуйста: с этим плагином на форуме появляется белая страница: https://toxu.ru. Я проверил кодировку на этом сайте — windows-1251.

Когда я захожу на ваш сайт и устанавливаю кодировку Windows-1251, страница остаётся пустой, и появляются эти ошибки (так же, как на других сайтах).

Однако я только что получил обновление от пользователя — он использует Windows XP с Chrome 49, так что, вероятно, проблема именно в этом.

Я быстро проверил аналитику и обнаружил, что за последние 28 дней 85 пользователей совершили 281 визит с Windows XP. Мне не кажется, что наш сайт должен поддерживать Windows XP, но я хотел бы найти способ хотя бы показать этим пользователям сообщение «Пожалуйста, обновите браузер, чтобы использовать этот сайт».

Я порекомендую этому пользователю обновить операционную систему, по крайней мере, до Linux.

Chrome прекратил поддержку XP в апреле 2016 года. Firefox прекратил поддержку в июне 2018 года, поэтому он является лучшей альтернативой, чем Chrome. Но в конечном итоге пользователю следует как можно скорее обновить систему.

Я предупрежу их о рисках для безопасности и предложу помощь с Linux, если они захотят это сделать.

В процессе отладки я составил длинный список всего, что нужно проверять при поступлении таких запросов. В следующий раз мне нужно добавить в список “Windows NT 5.1” и версии браузеров.