IE фунт символ (£) - PullRequest
       35

IE фунт символ (£)

1 голос
/ 24 февраля 2009

У меня есть html-форма, которая позволяет делать разные странные вещи. Это отлично работает в Firefox. и в большинстве случаев он отлично работает в IE

Однако знак £ (фунт стерлингов) вызывает проблемы и, похоже, попадает в подчинение.

Форма - это что-то вроде

 <form action="*MyFormAction*"  accept-charset="UTF-8" method="post">

Я думаю, что видел эту проблему раньше, но не могу вспомнить решение.

изменить, символ евро € отлично работает

редактировать 2, На самом деле, если я поставлю символ € с символом £, он также будет работать нормально. Глядя на проблему, если я использую символы, которые не входят в расширенную часть iso8859-1, это работает нормально. Если я использую расширенные charicters от iso8859-1, они будут обмануты. Итак, как мне заставить IE использовать набор символов, который должен принимать accept-charset?

Ответы [ 4 ]

6 голосов
/ 24 февраля 2009

Accept-Charset = "UTF-8"

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

Таким образом, если вы добавите этот атрибут, а ваша страница еще не будет в UTF-8, вы можете получать символы, представленные в виде кодировки или UTF-8, и у вас нет возможности Скрипт чтения-отправки формы, чтобы знать!

По этой причине вы никогда не должны использовать accept-charset; Вместо этого вы всегда должны убедиться, что страница, содержащая форму, правильно представлена ​​как «Content-Type: text / html; charset = utf-8» (по заголовку HTTP и / или ).

На самом деле, если я поставлю символ € с символом £, он также будет работать нормально.

Да, это потому, что «€» не может быть закодировано в кодировке страницы по умолчанию (предположительно ISO-8859-1). Поэтому IE прибегает к отправке поля в кодировке UTF-8, чего вы и хотели всегда.

1 голос
/ 24 февраля 2009

Я думаю, что у bobince есть идеальный ответ: «подать страницу в UTF-8», однако, поскольку я не могу этого сделать, я публикую свою работу для процветания.

Добавление скрытого поля unmunge с расширенным символом, отличным от ISO-8859-1 (для чего предназначены наши страницы), заставляет отправлять в UTF8

так

<input type="hidden" name="unmunge" value="&#x20ac;"  />

исправляет кодировку (сущность является символом евро).

0 голосов
/ 24 февраля 2009

Я не уверен, поможет ли это (прочитайте всю статью на http://fyneworks.blogspot.com/2008/06/british-pound-sign-encoding-revisited.html)

Выдержка:

ПРОБЛЕМА Если вы посмотрите на UTF-8 / Latin-1 (AKA ISO-8859-1) Таблица символов вы обнаружите, что десятичный код для британского фунта знак стерлинга 163 - и шестнадцатеричный код A3.

£ =% A3

Однако это не относится ко всем функции кодирования / декодирования в Javascript ...

encodeURI/encodeURIComponent
Encodes a Uniform Resource Identifier (URI) component by

замена каждого экземпляра определенного символы один, два или три escape-последовательности, представляющие UTF-8 кодировка символа

Что означает, чтобы кодировать наш любимый знак фунта, Javascript использует 2 персонажи. Это где раздражает «В» входит ...

£ =% C2% A3

Надеюсь, это поможет.

0 голосов
/ 24 февраля 2009

Как отправляется £? Если он находится в поле ввода цены, не отправляйте ее, разрешите отправку только чисел и добавьте £, когда вы снова отобразите цену. Или добавьте символ валюты в бэкэнд-скрипт.

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