LINUX.ORG.RU

Gentoo. Ломаный KOI8-R

 


0

1

Доброго времени суток, столкнулся с локализацией kоi8-r, выдаёт только квадраты, иногда при определённых шрифтах вопросы. Подскажите, как это починить? Вот то что у меня сейчас:

locale.gen ru_RU.KOI8-R KOI8-R

02locale LC_ALL=«ru_RU.KOI8-R» LANG=«ru_RU.KOI8-R» LC_MESSAGES=«POSIX» LC_NUMERIC=«POSIX» LC_TIME=«POSIX»

consolefont consolefont=«cp866-8x16» consoletranslation=«koi2alt»

keymap keymap="-u ru"

unicode=«Yes»

P.S. KOI8-R нужен для работы, поставить UTF-8 не рушит проблему.

consolefont=«cp866-8x16»

У тебя фонт от другой кодировки.

keymap keymap="-u ru"

Напомни, что значит '-u'?

unicode=«Yes»

Зачем это в koi8-r?

P.S. KOI8-R нужен для работы, поставить UTF-8 не рушит проблему.

Не верю. Поподробней, пожалуйста.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)

Прописать в conssolefont шрифт совместимый с кои8-р. Твой точно совместим?

grem ★★★★★
()

UTF-8 всё рушит инфа 100. скорее всего однобайтные кодировки и эта в частности тебе не нужны, хватит себя ограничивать, проблемы перехода только в голове

anonymous
()
Ответ на: комментарий от Kroz

собираю по хендбуку и ещё с пары источников

Касательно cp866-8x16, в прошлой сборке генты так работало, непонятно что случилось. -u ru это смена раскладки по ctrl+shift.

Что значит, не верю? Нельзя мне использовать UTF-8 по ТЗ и точка.

Viktor023
() автор топика
Ответ на: комментарий от Viktor023

Нельзя мне использовать UTF-8 по ТЗ и точка

А зачем же используете?
Вот здесь: keymap="-u ru" — "-u" — это Unicode.
Вот здесь: unicode=«Yes»

У вас консолька в мультибайтном режиме, stty вам подтвердит (скажет iutf8 без дефиса). А KOI8-R — это однобайтная кодировка. Современные ядра стартуют с юникодной консолькой по умолчанию, изменить можно параметром ядра vt.default_utf8=0 или вызовом unicode_stop и т.п.
Либо прописать в настройки что нужно, а система инициализации сделает нужные вызовы за вас самостоятельно.

bormant ★★★★★
()
Ответ на: комментарий от bormant

Большое человеческое спасибо! Unicide_stop помог.

Viktor023
() автор топика
Ответ на: комментарий от Viktor023

Нельзя мне использовать UTF-8 по ТЗ и точка.

Нельзя использовать где: в системе, или в программе?
Ты б поподробней расписал. Может тебе б более правильный/простой способ подсказали б.

Kroz ★★★★★
()
Ответ на: комментарий от Viktor023

Наверное вам никто не запрещает в системе использовать две кодировки, или вообще десять. Современный терминал гораздо лучше дружит с юникодом, дистрибутивы с ним гораздо лучше протестированы и т.п. Шрифтов больше. В общем, проблем меньше.

Но никто не запрещает конкретную программу запустить в другой кодировке. Например, подменив переменную среды.

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

никто не запрещает конкретную программу запустить в другой кодировке. Например, подменив переменную среды.

Это было справедливо для однобайтных кодировок.
Но как только попытаетесь смешать мультибайтный utf8 с однобайтной кодировкой, тут же получите проблемы, описанные ТС.

Просто попробуйте сами, прежде чем предлагать варианты простых понятных неправильных решений.

bormant ★★★★★
()

KOI8-R нужен для работы

Какой работы? В музее?

BceM_IIpuBeT ★★☆☆☆
()

locale.gen ru_RU.KOI8-R KOI8-R

правильно надо
locale.gen UTF-8

darkenshvein ★★★★★
()
Ответ на: комментарий от bormant

Вообще-то у него другая проблема.

Он не пытается смешать, он пытается использовать KOI8-R, подсунув юникодный keymap, да.

А зачем ему именно при старте системы в tty KOI8-R, он так и не объяснил.

Виртуальные терминалы же есть (xterm/konsole/gterm/...), там можно и шрифт поменять, и кодировку...

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

Он не пытается смешать, он пытается использовать KOI8-R, подсунув юникодный keymap, да.

Или трусы, или крестик ;-)
ТС написал, что после unicode_stop у него все пришло в норму. Это прямое свидетельство того, что консоль была в мультибайтном режиме (он же utf8). Попытка натянуть на такую консоль однобайтные локаль и/или кеймап, содержащие что-либо кроме нижней половины ASCII — как раз и называется «смешать».

Про виртуальные терминалы: да, можно и шрифт, и кодировку. Вот только кодировку имен файлов _там_ не поменять. А перекодирование имен файлов на лету можно настроить только для неродных ФС, для родных такое суть чистой воды расточительство и не реализовано.

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от bormant

А перекодирование имен файлов на лету можно настроить только для неродных ФС, для родных такое суть чистой воды расточительство и не реализовано.

На лету такого нет, да. А вот переименовать файлы через find + xargs очень даже можно:

$ cat 8bitname
#!/bin/bash
NEWFNAME=`echo "$1" | iconv -c -f utf-8 -t koi8-r`
if [ "$1" != "$NEWFNAME" ]; then
mv -i "$1" "$NEWFNAME"
fi

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

практически все нынешние текстовые редакторы умеют в перекодировку. что это за работа с текстами такая, которая обязательных коев требует?

ananas ★★★★★
()
Ответ на: комментарий от saahriktu

тут для полного набора нытика не хватает еще разве что LC_COLLATE=POSIX

ananas ★★★★★
()
Ответ на: комментарий от ananas

Не всем нужна перекодировка. Если на том же Си читать тексты в массивы типа char, а затем их разбирать, то проще когда тексты в однобайтной кодировке. И ТС пишет, что у него такое ТЗ, что нужно работать с текстами в KOI8-R.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

переименовать файлы через find + xargs

Для этого есть куда более эффективный convmv.

bormant ★★★★★
()
Ответ на: комментарий от saahriktu

Только тексты будут однобайтные, да и те с крякозябрами. Нужны ли такие тексты, чтобы с ними работать? Фидо осталось в 90х, и то был ад.

anonymous
()
Ответ на: комментарий от anonymous

с крякозябрами

Никаких кракозябр у текстов в KOI8-R в консоли с локалью KOI8-R нет.

Нужны ли такие тексты, чтобы с ними работать?

Разумеется.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

переопределить локаль для отдельной программы - как два байта переслать. для извращенцев, которым лень в ucs давно придуман luit. а требования тз - далеко не повод ныть о том, что многих уникодных символов нет в коях, и они показываются квадратиками/вопросиками

ananas ★★★★★
()
Ответ на: комментарий от saahriktu

То есть, тебе и никому больше. От поддержки однобайтных кодировок проблем гораздо больше, чем от их существования.

Deleted
()
Ответ на: комментарий от saahriktu

Мне интересно, как занимающемуся поддержкой локалей в некоторых ОС (не линукс), ты правда их используешь или просто издеваешься над местным сообществом?

Deleted
()
Ответ на: комментарий от Deleted

В линуксах однобайтные кодировки специально поддерживать ненужно. Они и так работают из коробки. Особенно на уровне ядра и glibc. В glibc'е однобайтные кодировки поддерживаются не отдельно от юникода, а как подмножества юникода. Поэтому ни у кого никаких проблем нет.

А в ядерной консоли с растровыми шрифтами ограниченными на уровне ядра в 64 Кб от юникода никакого профита нет. Всё равно в такие шрифты даже 512 символов не впихнуть. А все остальные тысячи символов отображаются одинаковыми квадратиками. А однобайтные кодировки в таких условиях замечательно работают и без всяких квадратиков.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

да нет, тут речь об одном и том же. или ты учитываешь окружение, или нет. обычно во втором случае тебя затирают в какаху, как ты не пыжься

ananas ★★★★★
()
Ответ на: комментарий от ananas

Про какое ещё окружение? Кто не хочет пользоваться однобайтным софтом может совершенно спокойно проходить мимо. Браузеры страницы в KOI8-R открывать не разучились. Да и далеко не все куда-то что-то выкладывают.

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Нет, они не работают из коробки, в том то и дело, всякие mbtowc() и wctomb() это конкретный гимор из-за этих кодировок, и не везде эти кодировки реализованы одинаково. В той же фряхе, для которой и делалось изначально koi8-r, эти функции тупо не работают. Да, проблема имплементации, от которой можно избавиться только отказавшись от этих кодировок.

Deleted
()
Ответ на: комментарий от Deleted

mbtowc() и wctomb()

Это юникодные функции же. А просто однобайтный функционал в однобайтном окружении просто работает.

фряхе

Мы конкретно про GNU/Linux'ы говорим.

saahriktu ★★★★★
()
Ответ на: комментарий от ananas

Так ему нужны однобайтные кодировки, и нужны по ТЗ.

А я говорю, что мимо однобайтного софта могут спокойно проходить те, кому нужен только юникод.

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от Deleted

Я такое уже комментировал. Тут как раз наоборот. Это, наоборот, было бы разжиганием розни против инакомыслящих. Потому, что у разных людей разные критерии выбора кодировок, и не всем нужен юникод.

Та статья как раз таки за разнообразие. Иначе бы просто сделали один народ на планете (это как раз как одна кодировка).

saahriktu ★★★★★
()
Ответ на: комментарий от saahriktu

Конкретно, это glibc, но да. Всё равно, мне непонятна твоя/ваша привязанность, это чем-то продиктовано, кроме как «вкусом» (не знаю как еще назвать)?

Deleted
()
Ответ на: комментарий от Deleted

Я нормально отношусь к юникоду, но далеко не всегда и не везде он нужен. Однобайтные кодировки имеют не меньше прав на существование чем юникод.

saahriktu ★★★★★
()
Ответ на: комментарий от Deleted

Когда я начал юзать линуксы руководства по руссификации описывали настройку именно локали KOI8-R, и это было нормально. Такие значительные изменения как смена топ локалей, я считаю, должны происходить не чаще чем раз в 100 лет, при этом о грядущих переменах нужно указывать в руководствах за десятилетия до, чтобы ни для кого это не было неожиданностью.

А то с 10-ти лет долгие годы читаешь учебники, где прямым текстом пишут «символ занимает один байт памяти, а один байт памяти - это символ», устанавливая линуксы открываешь руководства, где написано как настраивать однобайтную локаль, а потом, когда ещё и 40-ка лет не исполнилось, тебе внезапно говорят, что, дескать, теперь эпоха юникода. Ну вот как так-то? Это всё равно как если бы внезапно в килограмме стало 2000-20000 граммов, причём каждый раз по-разному.

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Нужно принять как данное, что локаль она 7битная, и сделана под особых людей, а кои8-р это просто дополнение сделанное нашим человеком. И есть альтернатива для всех, которая не потому что «толерантность», а потому что она удобна, всем.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.