Изменены значения TextInfo.ListSeparator

Значения по умолчанию TextInfo.ListSeparator для разных языков и региональных параметров изменились во всех операционных системах.

Описание изменения

В .NET 5.0.0 в рамках переключения с NLS на библиотеки ICU значения TextInfo.ListSeparator по умолчанию для различных языков и региональных параметров в Windows изменились. В качестве значений ListSeparator были использованы значения десятичных разделителей, полученные из международных компонентов для Юникода (ICU). В Linux и macOS значения TextInfo.ListSeparator не изменились, то есть по-прежнему используются значения десятичного разделителя.

Для всех операционных систем в .NET 5.0.1 и более поздних версий значения для TextInfo.ListSeparator эквивалентны значениям, полученным из NLS. Для Windows это означает, что значения эквивалентны тем, что были в .NET Framework и .NET Core 1.0–3.1. Для Linux и macOS значения TextInfo.ListSeparator теперь соответствуют значениям TextInfo.ListSeparator для Windows.

В следующей таблице приведены изменения для значений TextInfo.ListSeparator.

.NET Framework
.NET Core 1.0–3.1
.NET 5 .NET 5.0.1
Windows Получение из NLS Десятичный разделитель из ICU.
Можно переключиться обратно на NLS.
Эквивалентно NLS
Linux и macOS Десятичный разделитель из ICU Десятичный разделитель из ICU Эквивалентно NLS

Представленные версии

5.0.1

Причина изменения

Разработчики сообщили, что они используют свойство TextInfo.ListSeparator при анализе файлов с разделителями-запятыми (CSV), а новые значения TextInfo.ListSeparator нарушают этот синтаксический анализ.

Если код зависит от предыдущих значений десятичного разделителя, можно жестко закодировать требуемые значения TextInfo.ListSeparator.

Затронутые API