У меня есть файл roff в кодировке utf-8, который я хочу преобразовать в man-страницу с
$ nroff -mandoc inittab.5
Однако символы в [äöüÄÖÜ]
, например, отображаются неправильно, так как кажется, что nroffпредполагает кодировку ISO 8859-1 (вместо этого я получаю [äöüÃÃÃ
). Вызов nroff
с флагом -Tutf8
не меняет поведение, а переменные окружения локали (я полагаю правильно) установлены на
LANG=de_DE.utf8
LC_CTYPE="de_DE.utf8"
LC_NUMERIC="de_DE.utf8"
LC_TIME="de_DE.utf8"
LC_COLLATE="de_DE.utf8"
LC_MONETARY="de_DE.utf8"
LC_MESSAGES="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
LC_ALL=
Поскольку nroff
является только сценарием-оберткой и в конечном итоге вызывает groff
Я проверил вызов последнего:
$ groff -Tutf8 -mandoc inittab.5
Сравнение кодировок байтов символов в файле src иВ выходной файл я получаю следующие преобразования:
character src file output file
--------- -------- -----------
ä C3 A4 C3 83 C2 A4
ö C3 B6 C3 83 C2 B6
ü C3 BC C3 83 C2 BC
Ä C3 84 C3 83
Ö C3 96 C3 83
Ü C3 9C C3 83
ß C3 9F C3 83
Это поведение кажется мне очень странным (почему я получаю дополнительный C3 83
, и исходная последовательность байтов усекается полностью для больших умляутов и ß
?)
Почему это так и как я могу nroff
/ groff
правильно преобразовать мой файл в кодировке utf-8?
РЕДАКТИРОВАТЬ: Я использую GNU nroff (groff) version 1.22.2