Я чувствую, что это так нелогично, и это не порядок словаря.
Разве символ '-' ( 002d) не всегда меньше [0-9]( 0030-0039)? Каково общее правило в сопоставлении UTF-8?
И как это обойти, просто сделать так, чтобы -меньше было, [0-9]а остальные символы оставить неизменными для UTF-8 в Linux? (Таким образом, он может влияет на результат ls --sort, sortи т.д.)
Где именно ты это видишь? В `sort` 8.5 из GNU coreutils" 1- "всегда идет перед" 11- "в любой локали.
grawity 13 лет назад
3
Это моя ошибка. Я обрезал строки. Я изменил пример, пожалуйста, попробуйте еще раз.
Xiè Jìléi 13 лет назад
0
@ Grawity Я вижу это в Gmail, когда открываю zip-файлы. Я вижу это в Win7 с изображениями: 11, 12, 13, ..., 19, 1.
Wolfpack'08 10 лет назад
0
2 ответа на вопрос
6
Peter Eisentraut
Знак минус игнорируется при первом проходе. Таким образом, первый проход сорта 1, 11, 1a, 11a. Поскольку 1< a, вы получаете 11a< 1aи, следовательно, 11-a< 1-a.
-является переменным элементом сопоставления, означающим, что вы / разработчик можете игнорировать его. Реализация glibc, очевидно, делает это. На практике это пунктуация влияет на большинство знаков препинания.
Тогда есть ли какая-либо конфигурация для glibc, чтобы подавить это невежество?
Xiè Jìléi 13 лет назад
0
Не то, чтобы я знал.
Peter Eisentraut 13 лет назад
0
0
sleske
Как объяснил Питер Эйзентро, это связано с тем, что алгоритм сортировки для Unicode игнорируется -при сортировке.
Единственный способ обойти это - определить свой собственный языковой стандарт с другими параметрами сортировки (правила сортировки). Это, однако, довольно нетривиально. Кроме того, это даст вам систему с необычными правилами сортировки, которые могут вызвать проблемы с другим программным обеспечением.
Реалистично, вам придется либо переключить язык на ASCII (если вам не нужен символ Unicode), либо выполнить сортировку с помощью программы, в которой вы можете напрямую настроить правила сортировки.