使用 sort cmd 的标志 -f 在 de_DE.UTF-8 语言环境中出现意外的排序顺序

使用 sort cmd 的标志 -f 在 de_DE.UTF-8 语言环境中出现意外的排序顺序

在以下环境中排序时:

$ uname -a
Linux srap12dxR1 3.12.28-4-default #1 SMP Thu Sep 25 17:02:34 UTC 2014 (9879bd4) x86_64 x86_64 x86_64 GNU/Linux
$ env | egrep 'LANG|LC'
LC_COLLATE=de_DE.UTF-8
LC_CTYPE=de_DE.UTF-8

以下 UTF-8 编码文件:

$ cat sort_me 
¬B
b
Ä
D
X
ä
C
c
A
a
$ od -c sort_me 
0000000 302 254   B  \n   b  \n 303 204  \n   D  \n   X  \n 303 244  \n
0000020   C  \n   c  \n   A  \n   a  \n

使用-F标志(折叠为大写)我得到:

A
a
b
C
c
D
X
¬B
Ä
ä

即字符Ø不被忽略,并且德语元音变音阿阿被放置在最后。

不使用标志-F输出是部分正确的:

$ sort sort_me
a
A
ä
Ä
b
¬B
c
C
D
X

即字符Ø被忽略并且ØB排序在 char 下方,但是为什么德语变音符号不只是像 Wiki 所说的那样被视为普通字符:

https://en.wikipedia.org/wiki/Alphabetical_order “...在带有元音变音的德语字母(ä、Ö、Ü)中,通常会像其非元音变音版本一样对待,...”

相关内容