#php #html #cakephp #xhtml #utf-8
#php #HTML #cakephp #xhtml #utf-8
Вопрос:
У меня есть различные переводы для размещения на веб-сайте, которые включают французский, испанский, немецкий и русский языки.
Переводы хранятся в файле и просто передаются через PHP с использованием фреймворка CakePHP. В любом случае, проблема здесь:
Когда у меня нет метатега с кодировкой utf-8, французский, испанский и немецкий в порядке, но русский — полный беспорядок.
Однако, когда я добавляю мета-тег, некоторые символы с французского, испанского и немецкого языков ошибаются (они отображаются в виде вопросительного знака), а с русским все в порядке.
Есть какие-нибудь идеи, как я могу сделать так, чтобы один мета-тег был полезен для всех?
Ответ №1:
- Никакие мета-теги не влияют на кодирование. HTTP-заголовок делает это.
- Как сказал Базиль, русский UTF-8 отображается нормально, если это UTF-8, а не какая-либо другая кодировка.
итак, чтобы решить ЛЮБУЮ проблему кодирования
- Убедитесь, что ваш сервер отправляет правильный
Content-type
заголовок с кодировкой. Используйтеheader()
, чтобы установить его вручную. - Убедитесь, что ваши переводы действительно выполнены в формате utf-8.
- Вот и все.
Комментарии:
1. русский язык отображается нормально в utf-8, но почему французский, немецкий и испанский нет? :/
2. Браузеры обращают внимание на мета-теги, которые описывают кодировку символов, если HTTP-заголовки ничего не указывают.
3. «но почему французский, немецкий и испанский нет»? поведение этих языков ничем не отличается от поведения русского — при правильном использовании, как предлагал shrapnel.
Ответ №2:
Это может быть связано с вопросом кодировки символов. В Юникоде (и UTF-8) есть буквы кириллицы, но многие русские тексты раньше были в другой кодировке, например KOI.