Я пытаюсь отладить неприятную проблему utf-8 и не знаю, с чего начать.
На странице содержится слово «Категория» «n», которое должно быть «Категория». Очевидно, что-то не так с UTF-8. Это происходит со всеми этими многобитными персонажами. Я отсканировал темы из gazillion здесь, на UTF8, но они в основном охватывают основы, а не ту ситуацию, когда кажется, что все настроено и установлено правильно, но явно нет.
Страницы обслуживаются Drupal из базы данных MySQL.
База данных была перенесена (не мной) с помощью sql-dumping и -importing через phpmyadmin. Вероятно, что-то пошло не так, потому что раньше проблем не было. И потому что проблема возникает только на старых, импортированных предметов. Редактирование этих элементов или вставка новых, а также ручное исправление неправильно закодированных символов устраняет проблему. Хотя я не вижу разницы в базе данных.
- Контент, отредактированный через Drupal, не имеет этой проблемы.
- Когда в CLI, используя MySQL, я могу прочитать этот текст и получить правильный символ ë. Обе статьи, которые отображают «правильные» и «неправильные» символы.
- В таблицах есть сопоставление
utf8_general_ci
- Заголовки, похоже, отправляются с правильной кодировкой:
Vary Accept-Encoding
и Content-Type text/html; charset=utf-8
- HTML-заголовок содержит
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- заголовки HTTP сообщают мне, что между ними есть прокси Varnish. Может ли это вызвать UTF8-преобразование / поломку
- контент подается в Gzipped, нормальный в Drupal, и я никогда не видел этот UTF8 исси с gzipping, но вы никогда не знаете.
Похоже, виновником является импорт, и я хотел бы знать,
а) что пошло не так
б) почему я не вижу разницы в клиенте mysql cli между «неправильными» и «правильными» символами
c) как исправить базу данных или с чего начать и узнать, как ее исправить.