Welcher Zeichensatz soll ich die codierten Zeichen in einer URL übernehme in sein?

StackOverflow https://stackoverflow.com/questions/140549

  •  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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top