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