Ответ 1
Вы ссылаетесь на кодовую страницу, которая сопоставляет кодовые страницы символам. Конечно, кодовые точки, являющиеся конечным набором неотрицательных целых чисел, являются хорошо упорядоченными, разными объектами. Однако это не то, о чем говорят герои.
Персонажи имеют collation порядок, который является частичным упорядочением: символы могут быть "равными", но не одинаковыми. Collation - это понятная пользователем концепция, которая зависит от локали (и с течением времени).
Строки еще сложнее, потому что некоторые наборы символов (например, Unicode) могут содержать комбинации символов. Это позволяет "символу" быть представленным как один символ или как базовый символ, за которым следуют комбинирующие символы. Например, "ä" против "a¨". Поскольку они представляют один и тот же концептуальный характер, их следует считать еще более равными, чем "ä" против "a".
На испанском языке "ch", "rr" и "ll" использовались для буквы в алфавите, и слова были упорядочены соответственно; Теперь они еще не "...".
Аналогичным образом, в прошлом для англоговорящих нередко сортировались фамилии, начинающиеся с "Mc" и "Mac" после других, начиная с "M".
Библиотеки программного обеспечения должны иметь дело с такими вещами, потому что это то, что хотят пользователи. К счастью, некоторые из старых конвенций упали от использования.
Таким образом, язык может очень хорошо иметь правила сортировки, которые приводят к "acai" < "açaí" < "acorde", если "c" имеет тот же порядок сортировки, что и "ç", но "i" предшествует "í". Этот случай кажется странным, хотя возможность вообще требует, чтобы наш код позволял это.