Разные языки на веб-сайте

#php #html #cakephp #xhtml #utf-8

#php #HTML #cakephp #xhtml #utf-8

Вопрос:

У меня есть различные переводы для размещения на веб-сайте, которые включают французский, испанский, немецкий и русский языки.

Переводы хранятся в файле и просто передаются через PHP с использованием фреймворка CakePHP. В любом случае, проблема здесь:

Когда у меня нет метатега с кодировкой utf-8, французский, испанский и немецкий в порядке, но русский — полный беспорядок.

Однако, когда я добавляю мета-тег, некоторые символы с французского, испанского и немецкого языков ошибаются (они отображаются в виде вопросительного знака), а с русским все в порядке.

Есть какие-нибудь идеи, как я могу сделать так, чтобы один мета-тег был полезен для всех?

Ответ №1:

  1. Никакие мета-теги не влияют на кодирование. HTTP-заголовок делает это.
  2. Как сказал Базиль, русский UTF-8 отображается нормально, если это UTF-8, а не какая-либо другая кодировка.

итак, чтобы решить ЛЮБУЮ проблему кодирования

  1. Убедитесь, что ваш сервер отправляет правильный Content-type заголовок с кодировкой. Используйте header() , чтобы установить его вручную.
  2. Убедитесь, что ваши переводы действительно выполнены в формате utf-8.
  3. Вот и все.

Комментарии:

1. русский язык отображается нормально в utf-8, но почему французский, немецкий и испанский нет? :/

2. Браузеры обращают внимание на мета-теги, которые описывают кодировку символов, если HTTP-заголовки ничего не указывают.

3. «но почему французский, немецкий и испанский нет»? поведение этих языков ничем не отличается от поведения русского — при правильном использовании, как предлагал shrapnel.

Ответ №2:

Это может быть связано с вопросом кодировки символов. В Юникоде (и UTF-8) есть буквы кириллицы, но многие русские тексты раньше были в другой кодировке, например KOI.