Alterações interruptivas de globalização no .NET Core 3.0
As seguintes alterações interruptivas estão documentadas nesta página:
Alteração interruptiva | Versão introduzida |
---|---|
A localidade "C" é mapeada para a localidade invariável | 3.0 |
.NET Core 3.0
A localidade "C" é mapeada para a localidade invariável
O .NET Core 2.2 e versões anteriores dependem do comportamento padrão da ICU, que mapeia a localidade "C" para a localidade en_US_POSIX. A localidade en_US_POSIX tem um comportamento de agrupamento indesejável, pois não dá suporte a comparações de cadeia de caracteres que não diferenciam maiúsculas de minúsculas. Como algumas distribuições do Linux definem a localidade "C" como a localidade padrão, os usuários estavam tendo um comportamento inesperado.
Descrição das alterações
Do .NET Core 3.0 em diante, o mapeamento de localidade "C" foi alterado para usar a localidade invariável em vez de en_US_POSIX. O mapeamento da localidade "C" para invariável também é aplicada ao Windows para consistência.
O mapeamento de "C" para a cultura en_US_POSIX causou confusão no cliente, pois en_US_POSIX não dá suporte a operações de cadeia de caracteres de classificação/pesquisa sem diferenciar maiúsculas de minúsculas. Como a localidade "C" é usada como uma localidade padrão em algumas das distribuições do Linux, os clientes experimentaram esse comportamento indesejado nesses sistemas operacionais.
Versão introduzida
3.0
Ação recomendada
Nada mais específico do que a consciência dessa mudança. Essa alteração afeta apenas os aplicativos que usam o mapeamento de localidade "C".
Categoria
Globalização
APIs afetadas
Todas as APIs de agrupamento e cultura são afetadas por essa alteração.