При использовании wc
в строке Ås
(шведская заглавная буква Å) я получаю количество слов 2, когда я ожидал количество слов 1.
Подсчет слов Å
, sÅ
дает 1, что кажется правильным.
$ echo sÅ | wc
1 1 4
$ echo Å | wc
1 1 3
Подсчет слов Ås
, sÅs
дает 2, что кажется неправильным.
$ echo sÅs | wc
1 2 5
$ echo Ås | wc
1 2 4
Это может воспроизвести только буква Å
, а не любая из åäöÄÖ
.
$ echo "Ås" | wc
1 2 4
$ echo "Äs" | wc
1 1 4
$ echo "Ös" | wc
1 1 4
Я использую настройки Locale по умолчанию из Mac OS при запуске терминала, это выглядит так:
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=
Я получаю те же результаты на MacOS Sierra и Lion.
Просто проверяю, как выглядит строка Ås
.
$ echo "Ås" | hexdump
0000000 c3 85 73 0a
0000004
Итак, это вопрос настроек локали, и Mac OS настраивает его неправильно - по крайней мере, в отношении команды wc
?
Это ошибка в версии wc
для Mac OS, связанная с символом UTF-8 Å
?
Или при использовании (по умолчанию) wc -c
символ 85 определяется как символ пробела, представляющий собой многоточие …
в таблице ASCII? (Однако wc -m
дает ожидаемый ответ для количества слов)
Или я пропустил что-то очевидное здесь?
echo "\303\205s" | wc
... и сообщает только одно слово . (wc
в OS X/macOS происходит от более старой версии FreeBSDwc
.) ОДНАКО .. если я тестирую файл в OS X, я получаю другие результаты. Попробуйте:echo "Ås" > test.txt; wc -w test.txt
. Я понятия не имею, почему это происходит. Ждем информативных ответов. - person ghoti   schedule 31.01.2017wc
...echo -n "sÅÄÖs" | iconv -t latin1 -f utf8 | wc
дает0 1 5
- person Thibault D.   schedule 10.04.2017