Для некоторых символов латиницы-1 изменилась категория Юникода
Методы Char теперь возвращают правильную категорию Юникода для символов в диапазоне латиницы-1. Категория соответствует стандарту Юникода.
Описание изменения
В предыдущих версиях .NET методы Char использовали фиксированный список категорий Юникода для символов в диапазоне латиницы-1. Однако в стандарте Юникода категории некоторых из этих символов были изменены, так как эти API были реализованы, что создает расхождение. Кроме того, существует несоответствие между API Char и CharUnicodeInfo, которые следуют стандарту Юникода. В .NET 5 и более поздних версиях методы Char используют и возвращают категорию Юникода, которая соответствует стандарту Юникода для всех символов.
В следующей таблице показаны символы, чьи категории Юникода изменились в .NET 5:
Символ | Категория Юникода в предыдущих версиях .NET |
Категория Юникода в .NET 5 и более поздних версиях |
---|---|---|
§ (\u00a7) | OtherSymbol |
OtherPunctuation |
ª (\u00aa) | LowercaseLetter |
OtherLetter |
SHY (\u00ad) | DashPunctuation |
Format |
¶ (\u00b6) | OtherSymbol |
OtherPunctuation |
º (\u00ba) | LowercaseLetter |
OtherLetter |
Представленные версии
.NET 5.0
Рекомендуемое действие
Если у вас есть код, который получает категорию символов Юникода с помощью класса Char и предполагает, что категория никогда не изменится, может потребоваться обновить его.
Причина изменения
Это изменение было сделано таким образом, чтобы категории, возвращаемые типом Char, соответствовали стандарту Unicode и типу CharUnicodeInfo.
Затронутые API
- System.Char.GetUnicodeCategory
- System.Char.IsLetter
- System.Char.IsPunctuation
- System.Char.IsSymbol
- System.Char.IsLower
Кроме того, это изменение затрагивает любой класс, зависящий от Char для получения категории символов Юникода, например Regex.