Open GrabYourPitchforks opened 2 years ago
Tagging subscribers to this area: @dotnet/area-system-globalization See info in area-owners.md if you want to be subscribed.
Author: | GrabYourPitchforks |
---|---|
Assignees: | - |
Labels: | `area-System.Globalization` |
Milestone: | - |
@tarekgh is there anything planned for this issue in .NET 9.0?
Per the following two documents, comparing strings using
StringComparison.OrdinalIgnoreCase
is explicitly documented as equivalent to callingToUpperInvariant
on each string, then performing an ordinal comparison against the contents.These statements within the docs imply that ToUpperInvariant and ToLowerInvariant are ordinal case conversions ("simple case mapping"), not linguistic case conversions. However, it looks like we're not consistenly following this pattern.
This has collateral impact. For example, recent PRs like https://github.com/dotnet/runtime/pull/67758 assume that non-ASCII characters cannot case-map to ASCII characters, which is not a guarantee offered by Unicode, but which might be a guarantee we'd be willing to make separately within the runtime by munging the Unicode tables.
See also https://github.com/dotnet/runtime/issues/30960 for further discussion on case mapping as a more general Unicode concept.
/cc @tarekgh, who had thoughts on this offline.