2009-07-16 3 views
4

Документация CharUnicodeInfo.GetUnicodeCategory говорит:Unicode версии в .NET

Обратите внимание, что CharUnicodeInfo.GetUnicodeCategory не всегда возвращает то же UnicodeCategory значения как метод Char.GetUnicodeCategory при прохождении определенного символа в качестве параметра.

Метод CharUnicodeInfo.GetUnicodeCategoryпредназначен для отражения текущей версии стандарта Unicode. Напротив, хотя метод Char.GetUnicodeCategory обычно отражает текущую версию стандарта Unicode, он может возвращать категорию персонажа на основе предыдущей версии стандарта или может возвращать категорию, которая отличается от текущего стандарта, чтобы сохранить обратную совместимость.

Итак, какая версия стандарта Unicode отражается CharUnicodeInfo.GetUnicodeCategory и Char.GetUnicodeCategory, в котором версии .NET Framework?

ответ

4

Документация для String Class состояний версии Unicode, что .NET Framework 4 и 4,5 соответствуют:

.NET Framework 4

В .NET Framework 4, сортировка, наличник, нормализация, и символьная информация Unicode синхронизируется с Windows 7 и соответствует стандарту Unicode 5.1.

.NET Framework 4.5

В .NET Framework 4.5 работает под управлением операционной системы Windows 8, сортировка, корпус, нормализацию и символьной информации Unicode соответствует стандарту Unicode 6.0. В других операционных системах он соответствует стандарту Unicode 5.0.

+0

Я по-прежнему интересуюсь стандартами Unicode, которые соответствуют предыдущим версиям .NET Framework. – 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 У страницы есть комментарий wiki от Shawn Steele от Microsoft, который, я думаю, должен объяснить, почему использование CharUnicodeInfo является предпочтительным.

+0

Это не вопрос. – dtb

+0

Но это то, к чему это приводит. Как версия Unicode имеет значение, когда она не может работать правильно. Вы попробовали его с примером (не англ.), Чтобы найти разницу? – shahkalpesh

+1

Например, символ '' \ u0C58'' (http://www.fileformat.info/info/unicode/char/0c58/index.htm) был добавлен в Unicode версии 5.1.0 с категорией * Letter, Other * , «Метод CharUnicodeInfo.GetUnicodeCategory» предназначен для отображения текущей версии стандарта Unicode ». Но 'CharUnicodeInfo.GetUnicodeCategory' возвращает' UnicodeCategory.OtherNotAssigned'. Поэтому ** ** не отражает ** текущую версию Unicode 5.1.0. В какой версии ** это отражается? – dtb

2

Насколько я могу судить, версия unicode не сохраняется. Поиск символа реализуется путем хранения информации о символах во встроенном ресурсе с именем «charinfo.nlp» в файле mscorlib.dll, и это используется как внутренняя таблица поиска. Существует свойство «version» в заголовке для этих данных таблицы поиска, но оно является «0» в двоичных данных (смещение 0x20), поэтому я не уверен, что это версия или если она просто не реализована.

1

Как Michael Kaplan states:

версия выпущена The Unicode консорциума.

Потому что на самом деле нет окончательного Ответ на этот очень неспецифический вопрос . Ответ всегда зависит полностью на [обычно один] конкретной вопроса о том, что человек, запрашиваемая ищет ответ на

Так вежливый ответ в конце концов IT ЗАВИСИТ ЧТО ЗНАЧИТ. МОЖЕТ ЛИ ВЫ ЭЛЕКТРООБОРУДОВАНИЕ?

+0

* «Свойства Юникода ... зависят от версии продукта. Хотя Whidbey - это 4.1, а не 3.2, а Vista еще не отправлена, но последняя версия CTP - 4.1. «Спасибо за эту ссылку, вот что я ищу. – dtb