Набор символов 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? Если так, почему специальные символы отображаются правильно?