utf-8 console + backspace

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
aeifn
проходил мимо
Сообщения: 3
Зарегистрирован: 2019-08-08 17:40:19

utf-8 console + backspace

Непрочитанное сообщение aeifn » 2020-01-25 2:12:40

В консоли backspace стирает многобайтовую кодировку побайтово.

Например,

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

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

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

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

utf-8 console + backspace

Непрочитанное сообщение Alex Keda » 2020-01-25 16:08:09

Пропишите кодировку в переменные окружения
Убей их всех! Бог потом рассортирует...

aeifn
проходил мимо
Сообщения: 3
Зарегистрирован: 2019-08-08 17:40:19

utf-8 console + backspace

Непрочитанное сообщение aeifn » 2020-01-26 15:53:15

Не, кодировка прописана.

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

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. Правда, без ответов.

Olej
проходил мимо
Сообщения: 2
Зарегистрирован: 2020-01-24 20:58:35

utf-8 console + backspace

Непрочитанное сообщение Olej » 2020-01-27 1:32:23

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=

guest
проходил мимо

utf-8 console + backspace

Непрочитанное сообщение guest » 2020-01-27 13:31:14

В консоли backspace стирает многобайтовую кодировку побайтово.
Знаю, что в линуксе есть расширение консоли iutf8. А как это наладить в freebsd?
дело не в консоли, а в терминальном драйвере.
И тут пока никак.

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

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

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

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

aeifn
проходил мимо
Сообщения: 3
Зарегистрирован: 2019-08-08 17:40:19

utf-8 console + backspace

Непрочитанное сообщение aeifn » 2020-01-28 0:21:58

guest, спасибо за ответ!

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

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

rlwrap cat > file
.

guest
проходил мимо

utf-8 console + backspace

Непрочитанное сообщение guest » 2020-01-28 11:26:31

guest, спасибо за ответ!
Пока что придумал практическое решение проблемы при помощи rlwrap(1).
гнусный readline wrapper, интересное решение.

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