Ordem de classificação inesperada no código de idioma de_DE.UTF-8 usando a sinalização -f da ordem cmd

1

Enquanto classifica no seguinte ambiente:

$ 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

o seguinte arquivo codificado em 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

usando o sinalizador -f (dobrar para maiúsculas) eu recebo:

A
a
b
C
c
D
X
¬B
Ä
ä

i.e. o char ¬ não é ignorado e o alemão Umlaut Ä é colocado no final.

Não usando o sinalizador -f a saída está correta:

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

i.e. o char ¬ é ignorado e ¬B é classificado abaixo do char b , mas por que os Umlauts alemães não são tratados apenas como chars normais como o Wiki afirma:

link "... Em alemão, as letras com trema (Ä, Ö, Ü) são tratadas geralmente como suas versões não-semlautadas, ..."

    
por guru 15.02.2017 / 10:52

0 respostas