2010-07-07 1 views
3

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

Проблема возникает, когда страница контента является объектом действия формы. Когда форма отправляется и страница загружается в окне содержимого, она автоматически выбирает кодировку Западной Европы (Windows). Кто-нибудь знает, почему? Я пробовал искать какую-либо документацию по связанному поведению, но googles они ничего не делают. Любой вид руководства (помимо отправки заголовка 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 все равно должен быть отмечен флажок «Автовыбор», но теперь вместо «UTF-8» будет выбрана «Западноевропейская (Windows)». Мне нужно знать, есть ли что-то еще, что я могу сделать, чтобы автоматически сохранить кодировку UTF-8, когда действие формы завершено.

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

ответ

2

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

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

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

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

Смежные вопросы