Ist die Verwendung von "utf8 = ✓" der Verwendung von "utf8 = true" vorzuziehen?

569

Ich habe kürzlich einige URIs gesehen, die den Abfrageparameter "utf8 = ✓" enthalten. Mein erster Eindruck (nach dem Gedanken "mmm, sieht cool aus") war, dass dies verwendet werden könnte, um eine fehlerhafte Zeichenkodierung zu erkennen.

Ist dies eine bessere Möglichkeit, potenzielle Probleme mit der Zeichenkodierung zu lösen, oder hat nur ein Entwickler Spaß mit einem Hack?

Gary Rowe
quelle
7
Ich stimme dir nicht zu. Es gibt Schemata, die wie URNs aussehen und Abfrageparameter verwenden, z. B. Bitcoin. URIs sind nicht auf Browser beschränkt. Siehe en.wikipedia.org/wiki/URI_scheme . Diese Frage kann sich auch mit dem allgemeinen Fall befassen, in dem eine Zeichenkodierung erforderlich ist, wenn ein Browser auf einen Protokollhandler zugreift.
Gary Rowe
3
Nennen Sie Beispiele für diese URLs, oder sie sind nicht aufgetreten.
Hakre
10
Kein Thema, aber OK. Hier ist meine persönliche Spenden-Bitcoin-URI: bitcoin: 1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH? Amount = 0.5 & label = Agile% 20Stack. Beachten Sie, dass das Schema im Wesentlichen eine URN mit Abfrageparametern ist, aber an einen Protokollhandler übergeben wird. Diese Art von URI könnte wahrscheinlich auch von der Problemumgehung „utf8 = ✓“ profitieren.
Gary Rowe
1
@GaryRowe Hast du jemals Spenden von diesem Link erhalten?
Kyralessa,

Antworten:

814

Standardmäßig senden ältere Versionen von IE (<= 8) Formulardaten nach Möglichkeit in Latin-1-Codierung. Durch das Einfügen eines Zeichens, das nicht in Latin-1 ausgedrückt werden kann, muss der IE für die Formularübermittlung die UTF-8-Codierung verwenden, wodurch verschiedene Back-End-Prozesse vereinfacht werden, z. B. die Datenbankpersistenz.

Wenn der Parameter stattdessen utf8=truewäre, würde dies die UTF-8-Codierung in diesen Browsern nicht auslösen.

Gareth
quelle
8
@ LarsViklund Ich hätte mit meinem Kommentar klarer sein sollen. Ich meinte, dass die mit der Zeichenkodierung verbundene Validierung vereinfacht und nicht umgangen wird.
Gary Rowe
3
@Lars Richtig, es befreit Sie nicht von der Notwendigkeit, Ihre Eingaben zu überprüfen. Dies bedeutet jedoch, dass Codierungsänderungen nur ein Teil Ihrer Sicherheitsmaßnahmen sind und das Konzept Ihres "Standardverarbeitungspfads"
Gareth,
36
Siehe auch stackoverflow.com/questions/3222013/… . Anscheinend verwendete Ruby on Rails einen Schneemanncharakter und wurde in ein Häkchen geändert, das weniger mehrdeutig, aber weniger lustig war.
Jack V.
11
@JohnLBevan es wird vom empfangenden Ende ignoriert, es ist getan, es ist Aufgabe, den Browser zu zwingen, Dinge in utf8 anstelle von latin1 zu senden. Ich habe es auch als ie = 💩 gesehen (das ist der "Haufen Poo" -Code-Punkt, sieht so aus, als würde er nicht in Kommentaren gerendert.)
cabbey
3
@Gareth: Können Sie die Aussage, dass IE <= 8 Formulare das Dokument und / oder die Formularcodierung nicht unterstützen, sichern?
hakre