International Resource Identifier-Unterstützung in System.UriInternational Resource Identifier Support in System.Uri

Die Klasse System.Uri wurde um die Unterstützung von International Resource Identifier (IRI) und von internationalen Domänennamen (IDN) erweitert.The System.Uri class has been extended with International Resource Identifier (IRI) and Internationalized Domain Names (IDN) support. Diese Erweiterungen sind in .NET Framework 3.5, 3.0 SP1 und 2.0 SP1 verfügbar.These enhancements are available in .NET Framework 3.5, 3.0 SP1, and 2.0 SP1.

IRI- und IDN-UnterstützungIRI and IDN Support

Webadressen werden in der Regel mithilfe von Uniform Resource Identifiers (URI) ausgedrückt, die aus einem sehr eingeschränkten Satz von Zeichen bestehen:Web addresses are typically expressed using Uniform Resource Identifiers (URI) that consist of a very restricted set of characters:

  • ASCII-Großbuchstaben und -Kleinbuchstaben des englischen AlphabetsUpper and lower case ASCII letters from the English alphabet.

  • Ziffern von 0 bis 9Digits from 0 to 9.

  • einer kleinen Anzahl weiterer ASCII-SymboleA small number of other ASCII symbols.

Die URI-Spezifikationen werden in RFC 2396 und RFC 3986 dokumentiert, die von der Internet Engineering Task Force (IETF) veröffentlicht werden.The specifications for URIs are documented in RFC 2396 and RFC 3986 published by the Internet Engineering Task Force (IETF).

Durch das ständige Wachstum des Internets wird es immer notwendiger, Ressourcen in anderen Sprachen als in Englisch zu bezeichnen.With the growth of the Internet, there is a growing need to identify resources using languages other than English. Bezeichner, die dies ermöglichen und die Nicht-ASCII-Zeichen (Zeichen des Unicode-/ISO-Zeichensatzes 10646) zulassen, werden als International Resource Identifiers (IRIs) bezeichnet.Identifiers which facilitate this need and allow non-ASCII characters (characters in the Unicode/ISO 10646 character set) are known as International Resource Identifiers (IRIs). Die IRI-Spezifikationen werden in RFC 3987 dokumentiert, die von der IETF veröffentlicht wird.The specifications for IRIs are documented in RFC 3987 published by IETF. Wenn IRIs verwendet werden, kann eine URL Unicode-Zeichen enthalten.Using IRIs allows a URL to contain Unicode characters.

Die vorhandene Klasse System.Uri wurde erweitert und stellt nun IRI-Unterstützung basierend auf RFC 3987 bereit.The existing System.Uri class has been extended to provide IRI support based on RFC 3987. Derzeitige Benutzer werden keine Änderung gegenüber dem .NET Framework 2.0-Verhalten feststellen, außer IRI wird explizit aktiviert.Current users will not see any change from the .NET Framework 2.0 behavior unless they specifically enable IRI. Dadurch wird die Anwendungskompatibilität mit früheren Versionen von .NET Framework garantiert.This ensures application compatibility with prior versions of the .NET Framework.

In einer Anwendung kann angegeben werden, ob die IDN-Analyse auf Domänennamen angewendet werden soll und ob IRI-Analyseregeln anzuwenden sind.An application can specify whether to use Internationalized Domain Name (IDN) parsing applied to domain names and whether IRI parsing rules should be applied. Dies kann in der Datei „machine.config“ oder in der Datei „App.config“ durchgeführt werden.This can be done in the machine.config or in the app.config file.

Beim Aktivieren von IDN werden alle Unicode-Bezeichnungen in einem Domänennamen in ihre Punycode-Entsprechungen konvertiert.Enabling IDN will convert all Unicode labels in a domain name to their Punycode equivalents. Punycode-Namen enthalten nur ASCII-Zeichen und beginnen immer mit dem Präfix „xn--“.Punycode names contain only ASCII characters and always start with the xn-- prefix. So werden vorhandene DNS-Server im Internet unterstützt, da die meisten DNS-Server nur ASCII-Zeichen unterstützen (siehe RFC 3940).The reason for this is to support existing DNS servers on the Internet, since most DNS servers only support ASCII characters (see RFC 3940).

Das Aktivieren von IRI und IDN wirkt sich auf den Wert der Eigenschaft Uri.DnsSafeHost aus.Enabling IRI and IDN affects the value of the Uri.DnsSafeHost property. Das Aktivieren von IRI und IDN kann auch das Verhalten der Methoden Uri.Equals, Uri.OriginalString, Uri.GetComponents und IsWellFormedOriginalString verändern.Enabling IRI and IDN can also change the behavior of the Uri.Equals, Uri.OriginalString, Uri.GetComponents, and IsWellFormedOriginalString methods.

Die Klasse System.GenericUriParser wurde ebenfalls erweitert, um das Erstellen eines anpassbaren Parsers zu ermöglichen, der IRI und IDN unterstützt.The System.GenericUriParser class has also been extended to allow creating a customizable parser that supports IRI and IDN. Das Verhalten eines System.GenericUriParser-Objekts wird durch Übergabe einer bitweisen Kombination von Werten angegeben, die in der System.GenericUriParserOptions-Enumeration des System.GenericUriParser-Konstruktors verfügbar sind.The behavior of a System.GenericUriParser object is specified by passing a bitwise combination of the values available in the System.GenericUriParserOptions enumeration to the System.GenericUriParser constructor. Der GenericUriParserOptions.IriParsing-Typ gibt an, dass der Parser die in RFC 3987 angegebenen Analyseregeln für International Resource Identifiers (IRI) unterstützt.The GenericUriParserOptions.IriParsing type indicates the parser supports the parsing rules specified in RFC 3987 for International Resource Identifiers (IRI). Ob IRI auch tatsächlich verwendet wird, hängt davon ab, ob es aktiviert ist.Whether IRI is actually used depends on if IRI is enabled.

Der GenericUriParserOptions.Idn-Typ gibt an, dass der Parser die IDN-Analyse von Hostnamen unterstützt.The GenericUriParserOptions.Idn type indicates the parser supports Internationalized Domain Name (IDN) parsing (IDN) of host names. Ob IDN auch tatsächlich verwendet wird, hängt davon ab, ob es aktiviert ist.Whether IDN is actually used depends on if IDN is enabled.

Durch Aktivieren der IRI-Analyse wird die Normalisierung und Zeichenüberprüfung gemäß den neuesten IRI-Regeln in RFC 3987 ausgeführt.Enabling IRI parsing will do normalization and character checking according to the latest IRI rules in RFC 3987. Standardmäßig ist die IRI-Analyse deaktiviert, sodass die Normalisierung und Zeichenüberprüfung gemäß RFC 2396 und RFC 3986 durchgeführt wird.The default value is for IRI parsing to be disabled so normalization and character checking are done according to RFC 2396 and RFC 3986.

Die Verarbeitung von IRI und IDN in der Klasse System.Uri kann auch mithilfe der Konfigurationseinstellungsklassen System.Configuration.IriParsingElement und System.Configuration.IdnElement gesteuert werden.IRI and IDN processing in the System.Uri class can also be controlled using the System.Configuration.IriParsingElement and System.Configuration.IdnElement configuration setting classes. Die Einstellung System.Configuration.IriParsingElement aktiviert oder deaktiviert die IRI-Verarbeitung in der Klasse System.Uri.The System.Configuration.IriParsingElement setting enables or disables IRI processing in the System.Uri class. Die Einstellung System.Configuration.IdnElement aktiviert oder deaktiviert die IDN-Verarbeitung in der Klasse Uri.The System.Configuration.IdnElement setting enables or disables IDN processing in the Uri class. Die Einstellung System.Configuration.IriParsingElement steuert indirekt auch IDN.The System.Configuration.IriParsingElement setting also indirectly controls IDN. Die IRI-Verarbeitung muss aktiviert werden, damit die IDN-Verarbeitung überhaupt möglich ist.IRI processing must be enabled for IDN processing to be possible. Ist die IRI-Verarbeitung deaktiviert, wird die IDN-Verarbeitung auf die Standardeinstellung festgelegt. Darin wird aus Kompatibilitätsgründen das .NET Framework 2.0-Verhalten verwendet, und IDN-Namen werden nicht verwendet.If IRI processing is disabled, then IDN processing will be set to the default setting where the .NET Framework 2.0 behavior is used for compatibility and IDN names are not used.

Die Konfigurationseinstellung für die Konfigurationsklassen System.Configuration.IriParsingElement und System.Configuration.IdnElement wird beim Erstellen der ersten Klasse System.Uri einmal gelesen.The configuration setting for the System.Configuration.IriParsingElement and System.Configuration.IdnElement configuration classes will be read once when the first System.Uri class is constructed. Später vorgenommene Änderungen an den Konfigurationseinstellungen werden anschließend ignoriert.Changes to configuration settings after that time are ignored.

Siehe auchSee also