Браузер HTML кодирует символ перед отправкой? - PullRequest
1 голос
/ 17 сентября 2011

Не могу поверить в то, что вижу здесь!У меня есть обычная базовая HTML-форма (не изменившая enctype), если кто-то помещает странный японский символ в поле и публикует форму, то в моей базе данных сохраняется версия символа в кодировке HTML.Я не обрабатываю строку вообще, кроме как с помощью Trim ().Используя классический ASP (не исключено, я мог бы добавить!).У меня есть ощущение, что это может быть как-то связано с кодировкой utf-8 /, но я попытался поиграться с метатегом и типом контента и не смог заставить персонажа правильно пройти.Чтобы сделать вещи сложнее, я не могу получить классическую отладку ASP в VS Express 2010. Любые комментарии приветствуются:)

1 Ответ

0 голосов
/ 19 сентября 2011

Как вы можете видеть в этой демонстрации и читать в стандарте (4.10.22.6.4.2) , символы, которые не поддерживаются выбранной кодировкой (например, японские в кодировка ISO8859- * или cp1252) кодируется как объекты HTML.

Если вас устраивает неправильная обработка пользовательского ввода, содержащего html-объекты в открытом виде, вы можете заменить все числовые HTML-объекты в пользовательском вводе соответствующим символом Unicode (однако сделать это в ASP сложно, поскольку нет обратного Функция Server.HTMLEncode и поддержка Unicode практически не существует.

В качестве альтернативы используйте UTF-8 (и / или платформу веб-разработки этого тысячелетия), и все эти проблемы исчезнут. Тем не менее, поскольку это может не быть вариантом, вы можете захотеть, чтобы эскейп-сущности HTML не отображались в разных программах, например, с HttpUtility.HtmlDecode в C #, html_entity_decode в PHP, или HTMLParser.unescape в Python.

...