# Дружат ли UTF8 и консоль?

## danzz

Пошукал по форуму и понял, что многие консольные программы не работает в utf8. Но хотелось бы узнать конкретно про эти: centericq, mutt, vim, tin, slrn, irssi, bitchx? Ну раз в debian-е появился пакет centericq-utf8, значит centericq под utf8 завести всё-таки можно  :Smile: , а другие программы как?

Только не советуйте запускать программы в терминале с любой другой локалью, я про этот способ всегда помню, но хочется простой консоли  :Smile: .

Почему utf8? потому что по работе приходится иметь дело с файлами, в названиях которых есть немецкие умлауты.

За ссылки на другие треды, где это уже обсуждалось (я мог и пропустить в поиске), буду очень благодарен.

----------

## viy

vim, mutt --- да! я их пользую всю дорогу. centericq и irssi вроде тоже, но не отвечаю --- я пока только хочу на них пересесть.

----------

## UTSL

centericq работает

emacs работает

irssi тоже работает

----------

## danzz

А кто из шеллов лучше справляется с utf8? опять же из форумов понял, что zsh косячит сильнее, чем bash. Какие грабли с utf8 у bash?

----------

## viy

 *danzz wrote:*   

> Какие грабли с utf8 у bash?

 

У последнего из 2-ой ветки (у меня GNU bash, version 2.05b.0(1)-release) такой глюк --- если написать что-то по-русски, а потом стереть, то на экране символ стирается целиком, а из буффера --- только 1 байт. И потом, нажав ENTER, получаешь ругань относительно синтаксиса или несущ. файла или еще чего. Я думаю, что виноват не только bash, но readline, которую он использует.

У 3-го, судя по постам, вроде проблем нет.

----------

## danzz

 *viy wrote:*   

> У 3-го, судя по постам, вроде проблем нет.

 

Ага, понял. Значит надо будет 3-ий поглядеть обязательно.

Из http://ru.gentoo-wiki.com/HOWTO_ru_RU.utf8_Gentoo_way я так понял, надо в USE добавить unicode, в ядре включить UTF-8 и пересобрать ncurses и slang? а readline в таком случае надо пересобирать или пересоберётся с ними?

----------

## viy

readline, как таковая, не имеет USE-флажков. Но мне кажется, что в поставку bash'а включена версия readline (не требует он ее, видно из ebuild'а). Так вот, в 3-ей ветке что-то основательно подправили.

Вообщем, делай все по howto и ставь 3-ий bash.

----------

## danzz

Спасибо. Буду пробовать  :Wink: 

----------

## devil_ua

 *UTSL wrote:*   

> centericq работает
> 
> emacs работает
> 
> irssi тоже работает

 

Если вас не затруднит можно дописать ховто на ru.gentoo-wiki.com 

по поводу centericq.

--- Администрация ru.gentoo-wiki.com

----------

## danzz

а что для работы centericq с utf8 нужные какие-то особые телодвижения?

----------

## devil_ua

 *danzz wrote:*   

> а что для работы centericq с utf8 нужные какие-то особые телодвижения?

 

я незнаю, так как непользуюсь  :Smile: 

----------

## danzz

Помогите разобраться  :Smile: . Вот есть локаль ru_RU.UTF-8, с ней сообщения будут на русском, есть популярная всеми en_GB.UTF-8, а чем она так популярна?  :Smile: 

У меня задача такая: к примеру в одной папке лежат файлы с русскиим символами в имени и часть файлов с немецкими (умлауты). Какую локаль мне использовать, чтобы и русские и немецкие символы отображались нормально?

Ссылки на какую-нибудь документацию или другие треды приветствуются.

----------

## lefsha

 *danzz wrote:*   

> Помогите разобраться . Вот есть локаль ru_RU.UTF-8, с ней сообщения будут на русском
> 
> Какую локаль мне использовать, чтобы и русские и немецкие символы отображались нормально?
> 
> 

 

Сообщения будут на таком языке чему равна переменная

LC_MESSAGES.

Чтобы символы отображались нормально

нужен шрифт уникодный. В документации предлагают terminus. Вроде бы ничего.

----------

## UTSL

 *devil_ua wrote:*   

>  *UTSL wrote:*   centericq работает
> 
> emacs работает
> 
> irssi тоже работает 
> ...

 

да там писать нечего просто кодировку поменять и всё.

----------

## danzz

 *lefsha wrote:*   

>  *danzz wrote:*   Помогите разобраться . Вот есть локаль ru_RU.UTF-8, с ней сообщения будут на русском
> 
> Какую локаль мне использовать, чтобы и русские и немецкие символы отображались нормально?
> 
>  
> ...

 

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

----------

## viy

utf8 --- это формат кодирования UNICODE символов. UNICODE --- это стандарт, использующий 4 байта для кодировки 1 glyph'а (визуального символа), позволяющий кодировать все сужествующие символы по единой схеме. (Про 4-байта --- объяснение на пальцах, если есть непонимаие/претензии, то надо смотреть тех. спецификации).

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

Будет ли прога использовать то, что указано в локали --- зависит от того, умеет ли она это делать в принципе, а также были ли установлены файлы с сообщениями в соотв. языке (часто бывает, что прога поддерживает многоязычность, но перевести все на русский никто не удосужился).

Ну и чтобы все это ты увидел, у тебя должны быть "правильные" шрифты.

----------

## lefsha

 *danzz wrote:*   

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

 

Нет. UTF-8 это способ кодирования, который подразумевает возможность работы

с разными языками. Чтобы видеть эти символы на экране или печати необходимо иметь

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

или выборе некоего кода формата UTF-8. Данный файл может содержать символы только

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

Однако информация о них будет как и прежде передаваться, но неправильно или вообще не

интерпретироваться. Так что при наличии полных шрифтов можно отображать одновременно

в одном документе символы всех включенных языков.

В этом как бы и смысл сего творения UTF-8.

Насчет локали, как таковая в случае UTF-8 она как бы теряет свой изначальный смысл.

Поэтому когда UTF-8 станет стандартом и люди забудут о других способах,

то ее должны отменить.

Сегодня смысл локали имеет, что что в ней проставлено UTF

и какое значения принимают отдельные переменные образующие эту

самую локаль. Как например LC_MESSAGES.

Лично же мое мнение, что все эти настройки сделаны в Линухе

очень криво. Они разбиты по разным файлам и директориям.

И вместо того чтобы просто присвоить какие-то значения

переменным приходится "колдовать".

Во всех этих планах Windows делает Linux как ребенка.

Есть правда надежда, что кто-то разродится проектом

линух окружение и тогда это начнет приобретать более

адекватный смысл и вид.

Пока же это все сплошные костыли.

----------

## danzz

2 lefsha, 2 viy: спасибо за "разжовывание", кое-что хорошо прояснилось  :Smile: , ещё cyrillic-howto поглядел.

----------

## danzz

Дошли руки до установки, наконец-то, но с UTF-8 получил некоторые проблемы в консоли.

Значит, у меня есть следующее:

USE="... nls ... unicode ..."

$ emerge -pv slang ncurses

[ebuild   R   ] sys-libs/ncurses-5.4-r6  -bootstrap -build -debug -doc +gpm -minimal -nocxx +unicode 2,103 kB

[ebuild   R   ] sys-libs/slang-1.4.9-r1  -cjk +unicode 616 kB

Для себя прописал в bash_profile локаль ru_RU.UTF-8.

$ locale

LANG=ru_RU.UTF-8

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=

Теперь конфиги:

/etc/rc.conf

... UNICODE="yes" ...

/etc/conf.d/consolefont

CONSOLEFONT="ter-c16f"

/etc/conf.d/kemaps

KEYMAP="-u ru4"

SET_WINDOWKEYS="yes"

DUMPKEYS_CHARSET="koi8-r"

Делаю от root-а

/etc/init.d/keymaps restart

/etc/init.d/consolefont restart

Логинюсь, locale показывает, что всё ок, date выводит сообщение на русском.

Запускаю centericq и вижу что-то типа: "~Bек~C~Iий кон~Bак~B".

Что это такое? откуда оно взялось?

----------

## outs

хотелось бы разобраться с centericq

у меня аналогичная проблема

непонятные кракозябры при запуске

у кого-нибудь при настроенном юникоде рабоает centericq

если да, то какие телодвижения для этого вы принимали?

система переведена на юникод согласно официальному how-to...

----------

## [clu]

а в mc диалоговые окна, у них всё нормально с границами?  :Smile: 

----------

## Balancer

Использую несколько (штук 5..6) машин на Gentoo, все в UTF-8. Проблем не могу вспомнить  :Smile: 

----------

## outs

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

это centericq  и elinks (при просмотре им локальных файлов и папок наблюдаются жуткие косяки при отображении даты их создания)

а остальные приложения (по крайней мере из моего набора) работают вроде ок

mc не использую, поэтому как там дела обстоят - я не знаю

----------

## Balancer

>это centericq  и elinks

Ни того, ни другого не использую. Т.к. на десктопе у меня GUI, а на серверах мне centericq и elinks не нужны  :Smile: 

>mc не использую, поэтому как там дела обстоят - я не знаю

Использую постоянно - всё ок. Только хелп не работает, да я его и не использую  :Smile: 

...

А, да. На некоторых машинах проблемы с lynx'ом. Часть русских букв не отображается.

----------

## lefsha

 *viy wrote:*   

>  *danzz wrote:*   Какие грабли с utf8 у bash? 
> 
> У последнего из 2-ой ветки (у меня GNU bash, version 2.05b.0(1)-release) такой глюк --- если написать что-то по-русски, а потом стереть, то на экране символ стирается целиком, а из буффера --- только 1 байт. И потом, нажав ENTER, получаешь ругань относительно синтаксиса или несущ. файла или еще чего. Я думаю, что виноват не только bash, но readline, которую он использует.
> 
> У 3-го, судя по постам, вроде проблем нет.

 

Странно а у меня почему-то есть....

Вроде бы у второй больше проблем было.

3 работает, именно эта проблема имеет место быть.

----------

## lefsha

 *Balancer wrote:*   

> Использую несколько (штук 5..6) машин на Gentoo, все в UTF-8. Проблем не могу вспомнить 

 

Что-то с памятью происходит. Если не старость, то можно попробовать лечить.

Заучивай стихи, рассказы...

----------

## lefsha

 *outs wrote:*   

> я также пользую 5 машин на дженту на юникоде и проблемы есть везде
> 
> это centericq  и elinks (при просмотре им локальных файлов и папок наблюдаются жуткие косяки при отображении даты их создания)
> 
> 

 

Советую поискать в инете софт за 90й год. будут такие косяки с UTF,

что никакой план будет не нужен. Если старый софт не устраивает,

можно поискать программистов, который до сих пор используют

при написании 866 кодовую страницу. Если это все запустить под UTF

можно конкретно провести вечер даже без выпики. Переть будет по страшному.

Но еще лучше выучить китайский язык. Знаки еще более непонятные,

за то пользы куда больше...

----------

## viy

А не пришло ли время сходить к секретарше и выяснить, использует ли она Gnome или же KDE?

----------

## lefsha

 *viy wrote:*   

> А не пришло ли время сходить к секретарше и выяснить, использует ли она Gnome или же KDE?

 

Опять же повод пообщаться...

Она блин виндовс использует. Как собственно и все.

Это я был в розовых мечтах...

----------

