Welcher Zeichensatz soll ich die codierten Zeichen in einer URL übernehme in sein?
-
02-07-2019 - |
Frage
RFC 1738 legt die Syntax für URLs, und erwähnt, dass
URLs werden nur geschrieben, mit der Grafik druckbare Zeichen des
US-ASCII-Zeichensatz codiert. Das 80-FF hexadezimal Bytes sind nicht
in US-ASCII, und das Bytes verwendet 00-1F und 7F hexadezimal darstellen
Steuerzeichen; Diese müssen codiert wird.
Es tut jedoch nicht sagen, was Code gesetzt dieses Bytes dann darstellen.
RFC 2396 scheint die Situation zu versuchen und zu verbessern, aber:
Für ursprüngliche Charakter-Sequenzen, die Nicht-ASCII-Zeichen enthalten, jedoch ist die Situation schwierig. Internet-Protokolle, die Oktett-Sequenzen übertragen soll repräsentieren Zeichensequenzen erwartet werden, einen Weg zu schaffen, den Zeichensatz identifiziert verwendet, wenn es könnte mehr als eine sein, [RFC2277]. Allerdings gibt es derzeit keine Bestimmung in der generic URI-Syntax diese Identifizierung zu erreichen. Eine individuelle URI Schema kann einen einzelnen Zeichensatz erfordern, einen Standardzeichensatz definieren, oder bietet eine Möglichkeit, den Zeichensatz verwendet, um anzuzeigen.
Es wird erwartet, dass eine systematische Behandlung von Zeichencodierung innerhalb URI sein entwickelt als zukünftige Änderung dieser Spezifikation.
Gibt es eine ohne jeden Zweifel ihrer Art, in der ein Kunde in dem Zeichensatz bestimmen kann, um codiertes Bytes zu interpretieren, oder in dem ein Server kann bestimmen, was ein Client verwendet, um mit zu kodieren?
Es scheint mir, wie die meisten Server standardmäßig auf UTF-8, aber dies scheint eine De-facto-Wahl mehr als eine bestimmte zu sein.
Lösung
Wie pro Ihr Angebot, URLs sind ASCII. Das ist alles.
URIs OTOH, ermöglichen größere charsets; in der Regel UTF-8, wie Sie selbst gesagt.
Der Punkt ist, dass URLs eine Teilmenge von URIs ist. Daher ist die eigentliche Frage ist, welche davon ist, was Sie in einem Browser schreiben?
Ich vermute, Sie einen URI schreiben kann, und der Browser sollte sein Bestes versuchen, um eine URL zu verwandeln (was HTTP / 1.1-Unterstützung, AFAICR). Für Nicht-ASCII-Zeichen bedeutet, dass Hexcodes, in der Regel UTF-8-Codierung.
Andere Tipps
Ich glaube, die Spezifikation Sie suchen, ist RFC 3987 , die IRIs beschreibt - Internationalized Resource Identifiers.