Набор символов AJAX, отличный от набора символов страницы

Я обновляю интернет-систему, которая доставляет контент на клиентские сайты.

Существует проблема с набором символов, которая имеет непредвиденное поведение во время тестирования.

Система "встраивания" проста.

(1) Клиент копирует небольшой фрагмент кода Javascript в тело своего веб-сайта, где он хочет, чтобы наш встроенный контент появлялся.

(2) Этот Javascript отправляет запрос на наш сервер и получает другой короткий сценарий Javascript, который внедряется в страницу. Затем браузер покорно запускает этот код.

(3) Этот недавно введенный код Javascript содержит строку (контент), которая должна отображаться на веб-странице в виде одной переменной. Код внедряет эту строку в тег DIV уже на веб-странице.

Я заблокирован в использовании этого метода доставки, потому что существующие клиенты должны продолжать работать.

Проблема заключается в следующем:

Веб-сайты клиентов могут быть закодированы в ISO-8859-1 или UTF-8.

Во время тестирования я обнаружил, что специальные (не ascii) символы не отображались должным образом при доставке запроса на шаге 2 выше с использованием ISO-8859-1. Это ожидаемое поведение; хорошая вещь.

Когда я доставил код JS шага 2, используя кодировку UTF-8 (указанную в заголовке "Content-Type"), специальные символы отображались правильно, даже если они доставлялись внутри страницы, кодированной как ISO-8859-1.

Это не было ожидаемым поведением, поскольку страница кодируется как ISO-8859-1, но отображаемая строка в переменной JS была закодирована как UTF-8.

Действительно ли браузеры поддерживают страницы с несколькими кодировками набора символов на одной странице?

Разве эта введенная строка не будет интерпретироваться как ISO-8859-1, поскольку для страницы, на которой размещено содержимое, установлено значение ISO-8859-1? Если так, почему специальные символы отображаются правильно?

0 ответов

Другие вопросы по тегам