IE теряет автоматическое кодирование UTF-8 в целевой форме iframe - PullRequest
3 голосов
/ 07 июля 2010

У меня странная проблема в IE. Это связано с тем, как IE определяет кодировку iframe на основе его родительского содержимого. Мое приложение упаковывает содержимое страницы в iframe и устанавливает кодировку родительского окна в UTF-8 через заголовок Content-Type. Содержимое iframe не устанавливает кодировку с помощью Content-Type и выбирает кодировку родительского окна при его начальной загрузке. Это желаемое поведение - окно контента требует кодировки UTF-8 для некоторого языкового контента, но по сложным причинам, не зависящим от меня, оно не может принудительно установить свою собственную кодировку, поэтому оно полагается на кодировку родительского окна.

Проблема возникает, когда страница содержимого является целью действия формы. Когда форма отправляется и страница загружается в окне содержимого, она автоматически выбирает западноевропейскую (Windows) кодировку. Кто-нибудь знает почему? Я пытался найти какую-либо документацию по связанному поведению, но Google, они ничего не делают. Любой вид лидерства (помимо отправки заголовка Content-Type или метки порядка байтов в содержимом) будет наиболее полезным.

К сожалению, у меня нет общедоступного места для размещения этого, но скопируйте эти примеры кода в локальные файлы и сохраните каждый с кодировкой UTF-8 без метка порядка байтов должна последовательно воспроизводить поведение во всех версиях IE.

frame1.html

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<div>エンコード</div>
<iframe src="frame2.html"></iframe>

frame2.html

<form>
    <input value="エンコード">
    <input type="submit">
</form>

Если вспомнить пример, если вы загружаете страницу и проверяете кодировку как родительского элемента, так и элемента iframe, вы должны увидеть «Auto-Select» и «UTF-8», выбранный в обоих. Если вы нажмете Отправить в iframe, фрейм перезагрузится и текст будет искажен. Проверка кодировки iframe должна по-прежнему показывать «Auto-Select» отмечен, но теперь вместо «UTF-8» будет выбран «Western European (Windows)». Мне нужно знать, могу ли я что-нибудь сделать, чтобы он автоматически сохранял кодировку UTF-8 после завершения действия формы.

Заранее спасибо!

1 Ответ

2 голосов
/ 23 февраля 2011

Когда вы говорите, что не можете добавить заголовок / спецификацию типа содержимого, можете ли вы добавить тип содержимого в качестве метатега? Что-то вроде:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

В последнее время у меня были очень похожие проблемы - IE всегда автоматически обнаруживал западноевропейские, за исключением случаев, когда на страницу переходило определенное всплывающее окно, которое затем заставляло IE выбирать UTF-8. Я так и не смог отследить, что именно его вызвало (итоговая страница была идентична, только страница, которая связалась с ней , отличалась!), Поэтому мы в итоге исправили ее, заставив UTF-8 по всему приложение (с заголовками).

Если вы действительно не можете каким-либо образом изменить внутреннюю страницу, возможно, вы могли бы «заменить» эту страницу своей собственной, а затем отправить содержимое на «другой» сервер через API или HTTP POST где вам не нужно беспокоиться об автоопределении IE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...