Unicode-kategorin har ändrats för vissa latinska-1 tecken
Char metoderna returnerar nu rätt Unicode-kategori för tecken i intervallet Latin-1. Kategorin matchar unicode-standardens.
Ändra beskrivning
I tidigare .NET-versioner Char använde metoderna en fast lista över Unicode-kategorier för tecken i intervallet Latin-1. Unicode-standarden har dock ändrat kategorierna för vissa av dessa tecken sedan dessa API:er implementerades, vilket skapade en avvikelse. Dessutom fanns det också en avvikelse mellan Char API:er och CharUnicodeInfo som följer Unicode-standarden. I .NET 5 och senare versioner Char använder metoderna och returnerar den Unicode-kategori som matchar Unicode-standarden för alla tecken.
I följande tabell visas de tecken vars Unicode-kategorier har ändrats i .NET 5:
Tecken | Unicode-kategori i tidigare .NET-versioner |
Unicode-kategori i .NET 5 och senare versioner |
---|---|---|
§ (\u00a7) | OtherSymbol |
OtherPunctuation |
ª (\u00aa) | LowercaseLetter |
OtherLetter |
BLYG (\u00ad) | DashPunctuation |
Format |
¶ (\u00b6) | OtherSymbol |
OtherPunctuation |
º (\u00ba) | LowercaseLetter |
OtherLetter |
Version introducerad
.NET 5.0
Rekommenderad åtgärd
Om du har någon kod som hämtar unicode-teckenkategorin Char med hjälp av klassen och antar att kategorin aldrig kommer att ändras, kan du behöva uppdatera den.
Orsak till ändringen
Den här ändringen gjordes så att kategorierna som returneras av Char typen överensstämmer med både Unicode-standarden och CharUnicodeInfo typen.
Berörda API:er
- System.Char.GetUnicodeCategory
- System.Char.IsLetter
- System.Char.IsPunctuation
- System.Char.IsSymbol
- System.Char.IsLower
Dessutom påverkas alla klasser som är Char beroende av för att hämta Unicode-teckenkategorin, Regextill exempel , av den här ändringen.