Чи краще використовувати “utf8 = ✓”, ніж “utf8 = true”?


569

Нещодавно я бачив кілька URI, що містять параметр запиту "utf8 = ✓". Моє перше враження (подумавши «ммм, виглядає круто»), було те, що це можна використовувати для виявлення порушеного кодування символів.

Отже, це кращий спосіб вирішити потенційні проблеми з кодуванням символів, чи це просто розробник, який розважається з хаком?


7
Я не погоджуюсь. Існують схеми, схожі на URN, і приймають параметри запиту - наприклад, Bitcoin. URI не обмежуються браузерами. Дивіться en.wikipedia.org/wiki/URI_scheme . Це питання також може стосуватися загального випадку, коли кодування символів потрібно, коли браузер звертається до обробника протоколу.
Гері Роу

3
Наведіть приклади цих URL-адрес або не сталося.
хакре

10
Тема поза темою, але гаразд. Ось моє особисте пожертвування Bitcoin URI: bitcoin: 1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH? Сума = 0,5 & label = Agile% 20Stack. Зауважте, що схема по суті є URN з параметрами запиту, але передає обробник протоколу. Цей тип URI, ймовірно, може отримати користь і від "utf8 = ✓".
Гері Роу

1
@GaryRowe Отже, ви коли-небудь отримували будь-які пожертви за цим посиланням?
Kyralessa

Відповіді:


814

За замовчуванням старіші версії IE (<= 8) подають дані форми в кодуванні Latin-1, якщо це можливо. Включаючи символ, який неможливо виразити латинією-1, IE змушений використовувати кодування UTF-8 для подання форми, що спрощує різні процеси резервного копіювання, наприклад, збереження бази даних.

Якщо параметр був замість utf8=trueцього, це не запустило б кодування UTF-8 у цих браузерах.


8
@LarsViklund Я мав би бути чіткішим із своїм коментарем. Я мав на увазі, що перевірка, пов’язана з кодуванням символів, спрощена, не обходить стороною.
Гері Роу

3
@ Lars Правильно, це не звільняє вас від необхідності перевіряти свої дані. Але це означає, що кодування налаштувань стає лише частиною вашої обробки безпеки та не загрожує концепції вашого шляху "стандартної обробки"
Гарет

36
Також дивіться stackoverflow.com/questions/3222013/… . Мабуть, Ruby on Rails використовував персонаж сніговика і був змінений на галочку, яка була менш неоднозначною, але менш смішною.
Джек В.

11
@JohnLBevan це ігнорується отриманим кінцем, це зроблено, це робота, щоб змусити браузер надсилати речі у utf8 замість latin1. Я також бачив це як ie = 💩 (це кодова точка "кучки пу", схоже, що це не відображається в коментарях.)
cabbey

3
@Gareth: Чи можете ви створити резервну копію твердження, що форми IE <= 8 не підтримують кодування документа та / або кодування форми?
хакре
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.