Арабские символы повреждаются при посадке, нормально после обновления - UTF8

У меня есть php-страница со смешанными латинскими и арабскими символами. Тег объявления charset находится в html-коде

и файл сохраняется как UTF-8. Весь текст статичен и находится в файле php (не из БД или внешнего источника)

Когда я просматриваю сайт, некоторые страницы случайным образом повреждаются в IE и FF и отображают все вопросительные знаки. После обновления страницы текст отображается правильно... Я давно работаю с арабским языком и ивритом и впервые сталкиваюсь с этой проблемой. Кто-нибудь может придумать причину?

Хром всегда в порядке...


person eakkas    schedule 13.11.2009    source источник
comment
Что происходит, когда вы вручную меняете кодировку — с помощью Вид -> Кодировка символов?   -  person Matijs    schedule 14.11.2009
comment
Кроме того, вы убедились, что ваш браузер кэширует страницы?   -  person Shreef    schedule 14.11.2009
comment
@ Matjis View -> Кодировка символов уже отображает правильную кодировку — utf-8. Вот что меня озадачивает, поскольку обычно проблема связана с отсутствующим объявлением кодировки, которое оставляет пробел, и браузер угадывает его. В моем случае в браузере установлена ​​правильная кодировка, но страница отображает все ????????. @Shreef - да, я убедился, что это не из-за кэширования. Если я продолжаю обновлять страницу, она время от времени возвращается к вопросительным знакам...   -  person eakkas    schedule 14.11.2009
comment
Любопытный. Даже если браузер ошибся с кодировкой, он все равно должен был видеть допустимые символы национальной кодовой страницы, а не полностью неверную строку ??????. Думаю, пришло время запустить сетевой сниффер и посмотреть, какие фактические байты отправляются.   -  person bobince    schedule 14.11.2009


Ответы (4)


Оказывается, ссылка на скрипт, которая была до того, как метаописание вызвало проблему. Я переместил <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> в качестве первого элемента после открывающего тега заголовка, и это больше не проблема. Спасибо за все комментарии..

P.S Я не был тем, кто кодировал эту страницу, а работал только над ее локализацией, поэтому я даже не думал, что метатег после скрипта может что-то изменить...

person eakkas    schedule 13.11.2009

Попробуйте отправить соответствующий заголовок, например:

header("Content-Type: text/xml; charset=utf-8");
person Sergey Galashyn    schedule 13.11.2009

Попробуйте использовать UTF8_encode для своего контента:

http://php.net/manual/en/function.utf8-encode.php

person Citizen    schedule 13.11.2009

Если у вас есть текст, который вы хотите сохранить в БД и отобразить, даже если кодировка страницы — latin-1, есть бесплатный инструмент, который может преобразовать Unicode в экранированный HTML:

http://www.sprawk.com/tools/escapeUnicode

person Nic Cottrell    schedule 15.03.2010