Obsługa identyfikatorów zasobów międzynarodowych w System.UriInternational Resource Identifier Support in System.Uri

System.UriKlasa została rozszerzona o obsługę międzynarodowych identyfikatorów zasobów (IRI) i międzynarodowych nazw domen (IDN).The System.Uri class has been extended with International Resource Identifier (IRI) and Internationalized Domain Names (IDN) support. Te ulepszenia są dostępne w .NET Framework 3,5, 3,0 SP1 i 2,0 SP1.These enhancements are available in .NET Framework 3.5, 3.0 SP1, and 2.0 SP1.

Obsługa IRI i IDNIRI and IDN Support

Adresy sieci Web są zwykle wyrażone przy użyciu jednolitych identyfikatorów zasobów (URI), które składają się z bardzo ograniczonego zestawu znaków:Web addresses are typically expressed using Uniform Resource Identifiers (URI) that consist of a very restricted set of characters:

  • Wielkie i małe litery ASCII z alfabetu angielskiego.Upper and lower case ASCII letters from the English alphabet.

  • Cyfry od 0 do 9.Digits from 0 to 9.

  • Niewielka liczba innych symboli ASCII.A small number of other ASCII symbols.

Specyfikacje identyfikatorów URI są udokumentowane w RFC 2396 i RFC 3986 opublikowane przez Internet Engineering Task Force (IETF).The specifications for URIs are documented in RFC 2396 and RFC 3986 published by the Internet Engineering Task Force (IETF).

W przypadku wzrostu Internetu istnieje coraz większa potrzeba zidentyfikowania zasobów w językach innych niż angielski.With the growth of the Internet, there is a growing need to identify resources using languages other than English. Identyfikatory, które ułatwiają tę potrzebę i dopuszczają znaki inne niż ASCII (znaki w zestawie znaków Unicode/ISO 10646) są znane jako międzynarodowe identyfikatory zasobów (IRIs).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). Specyfikacje dla tęczówki są udokumentowane w dokumencie RFC 3987 opublikowanym przez IETF.The specifications for IRIs are documented in RFC 3987 published by IETF. Użycie tęczówki pozwala na używanie znaków Unicode w adresie URL.Using IRIs allows a URL to contain Unicode characters.

Istniejąca System.Uri Klasa została rozszerzona w celu zapewnienia pomocy technicznej IRI na podstawie RFC 3987.The existing System.Uri class has been extended to provide IRI support based on RFC 3987. Bieżący użytkownicy nie będą widzieć żadnych zmian w zachowaniu .NET Framework 2,0, o ile nie włączą one IRI.Current users will not see any change from the .NET Framework 2.0 behavior unless they specifically enable IRI. Zapewnia to zgodność aplikacji z wcześniejszymi wersjami .NET Framework.This ensures application compatibility with prior versions of the .NET Framework.

Aplikacja może określić, czy należy zastosować analizę międzynarodowej nazwy domeny (IDN), która została zastosowana do nazw domen i czy mają być stosowane reguły analizy IRI.An application can specify whether to use Internationalized Domain Name (IDN) parsing applied to domain names and whether IRI parsing rules should be applied. Można to zrobić w machine.config lub w pliku app.config.This can be done in the machine.config or in the app.config file.

Włączenie IDN spowoduje przekonwertowanie wszystkich etykiet Unicode w nazwie domeny na ich odpowiedniki formacie Punycode.Enabling IDN will convert all Unicode labels in a domain name to their Punycode equivalents. Nazwy formacie Punycode zawierają tylko znaki ASCII i zawsze zaczynają się od Xn--prefix.Punycode names contain only ASCII characters and always start with the xn-- prefix. Przyczyną tego problemu jest obsługa istniejących serwerów DNS w Internecie, ponieważ większość serwerów DNS obsługuje tylko znaki ASCII (patrz dokument 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).

Włączenie IRI i IDN wpływa na wartość Uri.DnsSafeHost właściwości.Enabling IRI and IDN affects the value of the Uri.DnsSafeHost property. Włączenie IRI i IDN może również zmienić zachowanie Uri.Equals Uri.OriginalString metod,, Uri.GetComponents i IsWellFormedOriginalString .Enabling IRI and IDN can also change the behavior of the Uri.Equals, Uri.OriginalString, Uri.GetComponents, and IsWellFormedOriginalString methods.

System.GenericUriParserKlasa została również rozszerzona o możliwość tworzenia dostosowywalnego analizatora, który obsługuje IRI i IDN.The System.GenericUriParser class has also been extended to allow creating a customizable parser that supports IRI and IDN. Zachowanie System.GenericUriParser obiektu jest określone przez przekazanie bitowej kombinacji wartości dostępnych w System.GenericUriParserOptions wyliczeniu do System.GenericUriParser konstruktora.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. GenericUriParserOptions.IriParsingTyp wskazuje, że analizator obsługuje reguły analizy określone w RFC 3987 dla międzynarodowych identyfikatorów zasobów (IRI).The GenericUriParserOptions.IriParsing type indicates the parser supports the parsing rules specified in RFC 3987 for International Resource Identifiers (IRI). Czy IRI jest rzeczywiście używany, zależy od tego, czy IRI jest włączona.Whether IRI is actually used depends on if IRI is enabled.

GenericUriParserOptions.IdnTyp wskazuje, że analizator obsługuje międzynarodowy (IDN) analizowanie nazw hostów.The GenericUriParserOptions.Idn type indicates the parser supports Internationalized Domain Name (IDN) parsing (IDN) of host names. Czy IDN jest rzeczywiście używany, zależy od tego, czy IDN jest włączona.Whether IDN is actually used depends on if IDN is enabled.

Włączenie analizy IRI spowoduje normalizację i sprawdzanie znaków zgodnie z najnowszymi regułami IRI w dokumencie RFC 3987.Enabling IRI parsing will do normalization and character checking according to the latest IRI rules in RFC 3987. Wartość domyślna to IRI analiza, która ma zostać wyłączona, aby znormalizować i sprawdzanie znaków zostało wykonane zgodnie ze standardem RFC 2396 i RFC 3986.The default value is for IRI parsing to be disabled so normalization and character checking are done according to RFC 2396 and RFC 3986.

Przetwarzanie IRI i IDN w System.Uri klasie można również kontrolować przy użyciu System.Configuration.IriParsingElement System.Configuration.IdnElement klas ustawień konfiguracji i.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. System.Configuration.IriParsingElementUstawienie włącza lub wyłącza Przetwarzanie IRI w System.Uri klasie.The System.Configuration.IriParsingElement setting enables or disables IRI processing in the System.Uri class. System.Configuration.IdnElementUstawienie włącza lub wyłącza przetwarzanie IDN w Uri klasie.The System.Configuration.IdnElement setting enables or disables IDN processing in the Uri class. System.Configuration.IriParsingElementUstawienie powoduje także pośrednio kontrolę IDN.The System.Configuration.IriParsingElement setting also indirectly controls IDN. Aby przetwarzanie IDN było możliwe, należy włączyć przetwarzanie IRI.IRI processing must be enabled for IDN processing to be possible. Jeśli przetwarzanie IRI jest wyłączone, przetwarzanie IDN zostanie ustawione na ustawienie domyślne, w którym zachowanie .NET Framework 2,0 jest używane w przypadku zgodności i nazwy IDN nie są używane.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.

Ustawienia konfiguracji System.Configuration.IriParsingElement klas i są System.Configuration.IdnElement odczytywane raz podczas System.Uri konstruowania pierwszej klasy.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. Zmiany ustawień konfiguracji po upływie tego czasu zostaną zignorowane.Changes to configuration settings after that time are ignored.

Zobacz teżSee also