HTML-форма, ввод строки utf-8 firefox и IE! - PullRequest
1 голос
/ 10 сентября 2010

Я построил форму здесь, когда я вводил в нее данные utf-8 в Firefox 3.6.8, это выглядит так:

но он отлично работает с IE.8

alt text

Кажется, что при наборе (или заполнении) поля ввода все символы пишутся в верхнем регистре. Точно так же, как вы держите Shift и наберите его.

Кто-нибудь знает, в чем проблема с Firefox?


редактировать:

это простая форма

<form enctype="multipart/form-data" action="print $_SERVER['PHP_SELF'];" method="post" accept-charset="utf-8">

<br><input name="f_name" type="text"><br>

</form>

Ответы [ 2 ]

0 голосов
/ 10 сентября 2010

Это то, что появляется, когда вы вводите в поле формы перед отправкой чего-либо? Потому что, если это так, в этой проблеме нет 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().

0 голосов
/ 10 сентября 2010

Хм.Когда я пробую это , это, кажется, работает нормально;Я не знаком с арабским языком, но кажется, что символы появляются в нижнем, а не в верхнем регистре, когда я печатаю в форме.Вот полный пример, который я использую:

<!DOCTYPE html>
<html>
  <head>
    <title>Test</title>
  </head>
  <body>
    <form enctype="multipart/form-data" method="post" accept-charset="utf-8">
      <input name="f_name" type="text">
    </form>
  </body>
</html>

Это работает для меня на Firefox 3.6.8 на Mac OS X. На какой платформе вы работаете?Вы видите эту проблему в других полях ввода, таких как Google ?

Возможно, вы также захотите проверить кодировку, с которой отправляется Content-Type.Все будет работать лучше, если вы используете Content-Type: text/html; charset=utf-8.Также может быть полезно добавить тег <meta charset="utf-8"> на случай, если вы каким-то образом потеряете заголовок Content-Type.

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