Наборы символов могут быть сложными и трудными для отладки, когда дело доходит до веб-приложений LAMP.На каждом из этапов, на котором один компонент программного обеспечения взаимодействует с другим, существует возможность для неправильного перевода кодировки или неправильного хранения данных.
Необходимо обратить внимание на следующие места: - Между браузером и веб-сервером (который вы уже перечислили) - Между PHP и сервером MySQL
Указанный вами символ выглядит как обычный европейский символ, который будет включен в кодировку ISO-8859-1.
Вещи для проверки:
- , даже если вы задаете набор символов в мета-заголовке, взгляните в браузере, чтобы убедиться, какой набор символов фактически используется браузером.Если вы указали это, браузер должен использовать эту кодировку для рендеринга / просмотра страницы, но в тех случаях, когда я видел, он пытается автоматически определить правильную кодировку и не работает.Большинство браузеров имеют меню «кодирование» (возможно, в разделе «просмотр»), которое позволяет вам выбрать кодировку.Убедитесь, что в нем написано ISO-8859-1 (западноевропейский).
- MySQL может с радостью поддерживать преобразование набора символов, если это необходимо, но в большинстве случаев вы хотите, чтобы ваши таблицы и клиентское соединение были настроены на использование одной и той же кодировки.При такой настройке MySQL не будет пытаться выполнить какое-либо преобразование кодировки, а будет просто записывать данные, которые вы вводите, для байта в таблицу.При чтении он будет получаться таким же образом, байт за байтом.
Вы не сказали, читаете ли вы данные из базы данных с помощью того же веб-приложения или другого клиента,Я бы посоветовал вам попробовать прочитать его с помощью того же веб-приложения и с тем же заголовком метасимвола (опять же, проверьте, действительно ли браузер его настраивает) и посмотреть, что отображается в браузере.
Для отладкиэти проблемы требуют от вас полной уверенности в том, что используемый вами клиент / консоль тоже выполняет какое-либо преобразование; иногда самый безопасный способ - это получить данные в шестнадцатеричном редакторе, где вы можете быть уверены, что больше ничего не мешаетtranslation.
Если это не похоже на проблему со стороны браузера, пожалуйста, вы можете включить вывод следующих команд в вашу базу данных:
Запустить соединение, которое ваше веб-приложениеделает (не из какого-либо другого клиента MySQL):
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
Запускать из любого клиента MySQL:
SHOW CREATE TABLE myTable;
(где myTable - это таблица, из которой вы читаете / записываете данные из / в)