Страница 1 из 1

utf-8 console + backspace

Добавлено: 2020-01-25 2:12:40
aeifn
В консоли backspace стирает многобайтовую кодировку побайтово.

Например,

Код: Выделить всё

cat > test.txt
привет<backspace><enter>
<ctrl+d>

vim test.txt
выводит кракозябры.

Знаю, что в линуксе есть расширение консоли iutf8. А как это наладить в freebsd?

utf-8 console + backspace

Добавлено: 2020-01-25 16:08:09
Alex Keda
Пропишите кодировку в переменные окружения

utf-8 console + backspace

Добавлено: 2020-01-26 15:53:15
aeifn
Не, кодировка прописана.

Код: Выделить всё

locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=
Также на эту тему есть письмо в рассылке freebsd-bugs. Правда, без ответов.

utf-8 console + backspace

Добавлено: 2020-01-27 1:32:23
Olej
aeifn писал(а):
2020-01-26 15:53:15
Не, кодировка прописана.
А надо бы, наверное, так:

Код: Выделить всё

$ locale
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

utf-8 console + backspace

Добавлено: 2020-01-27 13:31:14
guest
В консоли backspace стирает многобайтовую кодировку побайтово.
Знаю, что в линуксе есть расширение консоли iutf8. А как это наладить в freebsd?
дело не в консоли, а в терминальном драйвере.
И тут пока никак.

Из-за неудачного изложения, Вас мало кто понял или просто спецы не
читают этот форум.

Настройками ввода/вывода терминальных устройств можно управлять
посредством stty, далее все вытягивается по цепочке: termios & etc.

Данное поведение, надеемся ПОКА, характерно не только для
консоли, а для любого терминального устройства в FreeBSD, потому
как дело не в консольном драйвере, а в терминальном драйвере
для всех терминальных устройств.

ps. Как всегда: termcap & terminfo, ncurses.

utf-8 console + backspace

Добавлено: 2020-01-28 0:21:58
aeifn
guest, спасибо за ответ!

Пока что придумал практическое решение проблемы при помощи rlwrap(1).

Код: Выделить всё

rlwrap cat > file
.

utf-8 console + backspace

Добавлено: 2020-01-28 11:26:31
guest
guest, спасибо за ответ!
Пока что придумал практическое решение проблемы при помощи rlwrap(1).
гнусный readline wrapper, интересное решение.

Я написал "терминальный драйвер" - неверное выражение, лучше
реализация терминального интерфейса.