Hi,
some further debugging of a hexdump output of printf, i.e.:
#!/bin/bash
for l in de_DE en_US nb_NO nn_NO ; do
echo "LC_NUMERIC=$l.UTF-8"
for n in 1 100 1000 10000 100000 1000000 10000000 ; do
LC_NUMERIC=$l.UTF-8 /usr/bin/printf "<%'10d>" $n |
hexdump -C
done
done
The output is:
...
LC_NUMERIC=nb_NO.UTF-8
00000000 3c 20 20 20 20 20 20 20 20 20 31 3e
|< 1>|
0000000c
00000000 3c 20 20 20 20 20 20 20 31 30 30 3e
|< 100>|
0000000c
00000000 3c 20 20 20 31 e2 80 af 30 30 30 3e
|< 1...000>|
0000000c
00000000 3c 20 20 31 30 e2 80 af 30 30 30 3e
|< 10...000>|
0000000c
00000000 3c 20 31 30 30 e2 80 af 30 30 30 3e
|< 100...000>|
0000000c
00000000 3c 31 e2 80 af 30 30 30 e2 80 af 30 30 30 3e
|<1...000...000>|
0000000f
00000000 3c 31 30 e2 80 af 30 30 30 e2 80 af 30 30 30 3e
|<10...000...000>|
00000010
LC_NUMERIC=nn_NO.UTF-8
00000000 3c 20 20 20 20 20 20 20 20 20 31 3e
|< 1>|
0000000c
00000000 3c 20 20 20 20 20 20 20 31 30 30 3e
|< 100>|
0000000c
00000000 3c 20 20 20 31 e2 80 af 30 30 30 3e
|< 1...000>|
0000000c
00000000 3c 20 20 31 30 e2 80 af 30 30 30 3e
|< 10...000>|
0000000c
00000000 3c 20 31 30 30 e2 80 af 30 30 30 3e
|< 100...000>|
0000000c
00000000 3c 31 e2 80 af 30 30 30 e2 80 af 30 30 30 3e
|<1...000...000>|
0000000f
00000000 3c 31 30 e2 80 af 30 30 30 e2 80 af 30 30 30 3e
|<10...000...000>|
00000010
printf seems to insert a 3-byte UTF-8 character 0xe2 0x80
0xaf as thousands separator. "0xe2 0x80 0xaf" is UTF-8 NARROW
NO-BREAK SPACE -> https:/
Screenshots for illustration:
-- Best regards / Mit freundlichen Grüßen / Med vennlig hilsen ======================================================================= Thomas Dreibholz Simula Metropolitan Centre for Digital Engineering Centre for Resilient Networks and Applications Pilestredet 52 0167 Oslo, Norway ----------------------------------------------------------------------- E-Mail: dreibh@simula.no Homepage: http://simula.no/people/dreibh =======================================================================