Обратите внимание, что проблема связана не с набором символов Unicode, а с символами, закодированными в 2 или более байтах (, а также с символами, ширина которых отличается от одной ячейки ).
UTF -8 — это кодировка Unicode, в которой символы от U+0080 до U+10FFFFF закодированы в 2 или более байтах. Символы Юникода от U+0000 до U+007F такие же, как в ASCII, а в UTF -8 кодируются одним байтом (, как и в ASCII ), и здесь не проблема.
Существуют и другие кодировки набора символов Unicode (, такие как iso8859 -1, одиночный -байт, но ограниченный символами от U+0000 до U+00FF, или GB18030, многобайтный -байт ), и есть другие наборы символов, отличные от -Unicode, с многобайтовыми кодировками -.
Вы можете узнать, какая кодировка символов используется в вашей локали, с помощью команды locale charmap
.
Реализация GNU fold
в настоящее время корректно работает только с однобайтовыми символами -. fold
большинства других систем не имеют этой проблемы. Многие могут даже обрабатывать символы с нулевой или двойной шириной экрана.
Реализация busybox из fold
поддерживает UTF -8 (, а не другие многобайтовые -байтовые чармапы, хотя )с 2010 года.
Во FreeBSD или Solaris:
$ echo $'a\u0301bcde' | fold -w3
ábc
de
со складыванием «busybox»:
$ echo $'a\u0301bcde' | busybox fold -w3
áb
cde
с кратностью GNU:
$ echo $'a\u0301bcde' | fold -w3
á
bcd
e
U+0301 — сочетание острого акцента. Он имеет нулевую ширину и в UTF -8 кодируется в 2 байта (0xcc 0x81 ). Таким образом,á
($'a\u0301'
)представляет собой один кластер графемы шириной 1, состоящий из 2 символов, закодированных в 3 байтах, отсюда 3 различных поведения, наиболее правильным из которых является FreeBSD/Solaris.
Я полагаю, вы хотите sudo nix-channel --rollback
? Например, вы также можете вручную проверить /nix/var/nix/profiles/per-user/root/channels-*/manifest.nix
— те, которые содержат имя, хэш коммита и т. д.