2009-07-16 2 views
4

Die Dokumentation von CharUnicodeInfo.GetUnicodeCategory sagt:Unicode-Versionen in .NET

Beachten Sie, dass CharUnicodeInfo.GetUnicodeCategory nicht immer den gleichen UnicodeCategory Wert wie die Char.GetUnicodeCategory Methode zurück, wenn ein bestimmtes Zeichen als Parameter übergeben.

Die Methode CharUnicodeInfo.GetUnicodeCategory ist , die die aktuelle Version des Unicode-Standards widerspiegelt. Obwohl die Char.GetUnicodeCategory-Methode normalerweise die aktuelle Version des Unicode-Standards widerspiegelt, gibt sie möglicherweise die Zeichenkategorie basierend auf einer früheren Version des Standards zurück oder gibt möglicherweise eine vom aktuellen Standard abweichende Kategorie zurück, um die Abwärtskompatibilität beizubehalten.

Also, welche Version des Unicode-Standard wird von CharUnicodeInfo.GetUnicodeCategory und Char.GetUnicodeCategory in welcher Version des .NET Framework reflektiert?

Antwort

4

Die Dokumentation für die String Class stellt die Unicode-Version, die auf .NET Framework 4 und 4.5 entsprechen:

.NET Framework 4

In .NET Framework 4, Sortieren, Gehäuse, Normalisierung, Die Unicode-Zeicheninformationen werden mit Windows 7 synchronisiert und entsprechen dem Unicode 5.1-Standard.

.NET Framework 4.5

In .NET Framework 4.5 auf dem Betriebssystem Windows 8 ausgeführt wird, das Sortieren, Gehäuse, Normalisierung, und Informationen Unicode-Zeichen entspricht der Unicode-Standard 6.0. Auf anderen Betriebssystemen entspricht es dem Unicode 5.0-Standard.

+0

Ich bin immer noch an den Unicode-Standards interessiert, die frühere Versionen von .NET Framework erfüllen. – dtb

+0

.net 3.5 - Unicode 5.0 - http://msdn.microsoft.com/en-us/library/system.globalization.unicodecategory(v=vs.90).aspx – Tom

+0

.net 1.1 - Unicode 3.1 - http: // msdn.microsoft.com/en-us/library/system.globalization.unicodecategory(v=vs.71).aspx – Tom

-1

This Seite hat einen Wiki-Kommentar von Shawn Steele von Microsoft, der meiner Meinung nach erklären sollte, warum CharUnicodeInfo bevorzugt wird.

+0

Das ist nicht die Frage. – dtb

+0

Aber das ist, was es zu führt. Wie wichtig ist die Unicode-Version, wenn sie nicht korrekt funktioniert? Haben Sie es mit einem Beispielzeichen (nicht englisch) versucht, um den Unterschied zu finden? – shahkalpesh

+1

Zum Beispiel wurde das Zeichen ''\ u0C58'' (http://www.fileformat.info/info/unicode/char/0c58/index.htm) in Unicode Version 5.1.0 mit der Kategorie * Letter, Other * hinzugefügt. . "Die' CharUnicodeInfo.GetUnicodeCategory' Methode wurde entwickelt, um die aktuelle Version des Unicode-Standards wiederzugeben. " Aber 'CharUnicodeInfo.GetUnicodeCategory' gibt' UnicodeCategory.OtherNotAssigned' zurück. Es entspricht also nicht der aktuellen Unicode-Version 5.1.0. Welche Version ** spiegelt es wider? – dtb

2

Soweit ich das beurteilen kann, ist die Unicode-Version nicht gespeichert. Die Zeichenabfrage wird implementiert, indem die Zeicheninformationen in einer eingebetteten Ressource namens "charinfo.nlp" in mscorlib.dll gespeichert werden, und diese wird intern als Nachschlagetabelle verwendet. Es gibt eine "version" -Eigenschaft in der Kopfzeile dieser Nachschlagetabellendaten, aber es ist "0" in den binären Daten (Offset 0x20), also bin ich mir nicht sicher, was das eine Version von ist, oder ob es einfach nicht implementiert ist.

1

Als Michael Kaplan states:

Die Version vom Konsortium Unicode freigegeben.

Da gibt es wirklich keine endgültige Antwort auf diese sehr unspezifische Frage. Die Antwort hängt immer ganz auf die [in der Regel ein] spezifische Problem, dass die Person zu fragen ist zu

für die Antwort suchen also die höfliche Antwort am Ende ist IT darauf an, was Sie meinen. KÖNNEN SIE ELABORATE A BIT?

+0

* "Unicode-Eigenschaften ... hängt von der Produktversion. Obwohl Whidbey ist 4.1 nicht 3.2 und Vista hat noch nicht ausgeliefert, aber die neueste CTP ist 4.1. "Danke für diesen Link, das ist es wonach ich suche. – dtb