Я столкнулся со следующей проблемой: многие программисты либо не знают о существовании Accept-charset, либо игнорируют этот атрибут. Придя в свою нынешнюю компанию, я начал разрабатывать сервис REST API, но время от времени меня сталкивали с ошибками «Ответ XML поврежден из-за.
».
Мне пришлось покопаться в графическом интерфейсе и обнаружить, что мой любимый тег отсутствует. Зачем нам еще один атрибут, спросите вы? Что такое Accept-charset, было описано лучше меня давным-давно в W3C эта ссылка ( http://www.w3.org/TR/html401/interact/forms.html#adef-accept-charset )
Давайте теперь представим ситуацию:
- У вас есть вебсайт - вы указали кодировку utf-8 в мета — у вас настроена серверная часть для работы с utf-8 (база, бэкенд и т.д.) Тестируешь: заходишь на сайт, отправляешь из формы — всё нормально.
Однако проблема в том, что многие люди забывают:
1. в большинстве случаев браузер автоматически определяет кодировку и ваш сайт корректно отправляет данные на серверную часть
2. есть люди, которые устанавливают свою кодировку вручную
3. есть люди, которым нравится играться с вашим сайтом
4. прочее: боты, ПО для тестирования и т.д.
Что произойдет в этом случае, если в теге FORM нет атрибута subject:
1. откройте свой сайт
2. измените кодировку в браузере, пусть будет ISO-8859-1
3. попробуйте ввести данные на русском языке или, например: немецком, используя умлауты; Если вы хотите пойти дальше, попробуйте специальный вариант. символы
4. опубликуйте свою форму
5.открываем свою запись в базе и смотрим в какой кодировке туда попали ваши символы и как их обработала серверная часть Отвечать : текст придет к вам в кодировке ISO-8859-1, потому что браузер следует стандартам и определенной последовательности определения кодировки, а это значит, что если строго указан ISO-8859-1, то браузер будет подчиняться и использовать ISO-8859. -1 для отправки данных из формы
Как с этим справиться?
Посмотрите на название темы: да, именно Accept-charset="utf-8" в теге FORM избавит вас от этой проблемной ситуации.Этот атрибут даст браузеру необходимые «знания» о том, что данные из формы следует отправлять только в кодировке utf-8 и никакой другой.
Заключение : все гениальное просто, а в наше время миром правит информация.
P.S. YouTube до сих пор остается для меня загадкой, они намеренно не используют Accept-charset, вместо этого используют какой-то свой функционал, который делает то же самое (похоже на javascript) Теги: #web 2.0 #web 2.0 #web 2.0 #web #веб-разработка #разработка веб-сайтов
-
Математика
19 Dec, 24