Это то, что появляется, когда вы вводите в поле формы перед отправкой чего-либо? Потому что, если это так, в этой проблеме нет UTF-8. Строки на стороне веб-браузера основаны исключительно на Unicode; только когда вы перемещаете их из браузера на сервер или обратно, вопросы кодирования вступают в игру.
Полагаю, проблема с простыми шрифтами. Как видно из вашего скриншота, Firefox использует шрифт, отличный от IE, и, возможно, этот шрифт не имеет должной поддержки для функций, необходимых для арабского языка, таких как контекстные лигатуры, которые заботятся о выборе правильного варианта глифа каждого символа. Проверьте таблицы стилей и при необходимости используйте Firebug, чтобы выяснить, какой шрифт применяется к этому входу.
accept-charset="utf-8"
в основном бесполезен, потому что IE обрабатывает его неправильно. Он использует UTF-8 в качестве резервной кодировки (для символов, которые не вписываются в текущий набор символов страницы) вместо кодировки only .
Чтобы получить форму, отправляемую в UTF-8, необходимо убедиться, что страница, содержащая форму, обслуживается как text/html;charset=utf-8
с использованием заголовка Content-Type
и / или тега <meta>
.
action="print $_SERVER['PHP_SELF'];"
Я предполагаю, что вы неправильно вставили это, и значение фактически находится в теге <?php ... ?>
, иначе форма не будет работать вообще.
Это дыра для внедрения HTML, которая может привести к атакам на межсайтовый скриптинг. Вы всегда должны кодировать HTML-строки, которые вы вводите в текстовое содержимое HTML или значения атрибутов, используя htmlspecialchars()
.