LINUX.ORG.RU

Помогите с русскими буквами в териминале

 , , , ,


0

1

Собственно сабж. http://www.imageup.ru/img263/1165014/00001.png

В «File Manager» - русский отображается нормально, а в терминале русские буквы отображаются как знаки вопросы: «cd ????»

aod314@gentoo ~ $ uname -a
Linux gentoo 3.6.11-gentoo #2 SMP Thu Jan 3 20:50:17 GMT+3 2013 x86_64 Intel(R) Core(TM) i7 CPU X 980 @ 3.33GHz GenuineIntel GNU/Linux

aod314@gentoo ~ $ locale  
LANG=en_GB.UTF-8
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=en_US


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

Unicode есть. Не нашел информации по кодировки в «~/.config/Terminal/terminalrc», с гуя не задайть

# cat /etc/conf.d/keymaps 
...
KEYMAP="ru4"
...

# cat /etc/conf.d/consolefont
...
consolefont="cyr-sun16"
...
AoD314
() автор топика
Ответ на: комментарий от AoD314

Это настройки консоли, а не эмулятора терминала. У них поддержка юникода по-разному реализована.

vurdalak ★★★★★
()
Ответ на: комментарий от imul
# grep font= /etc/conf.d/consolefont
consolefont="ter-u16b"

и все равно не помогает ...

AoD314
() автор топика
Ответ на: комментарий от imul
# cat /etc/make.conf 

LINGUAS="en ru"

ACCEPT_LICENSE="*"

INPUT_DEVICES="evdev keyboard mouse virtualbox" 

VIDEO_CARDS="nvidia"

#PORTDIR_OVERLAY="/usr/local/portage"
#source /var/lib/layman/make.conf

USE="sse nls sse2 sse3 ssse3 qt4 python theora gmp posix usb png ogg udev threads xvid webm x264 ogg flac opengl policykit consolekit X xorg vdpau unicode doc"

CFLAGS="-march=native -mtune=corei7 -Ofast -flto -pipe -msse4.1 -msse4.2 -mpopcnt -fomit-frame-pointer"

MAKEOPTS="-j12"

EMERGE_DEFAULT_OPTS="--jobs=4"
AoD314
() автор топика
Ответ на: facepalm от anonymous
# ls *.pdf
������������ ���������� ������������ �� vim.pdf
AoD314
() автор топика
Ответ на: комментарий от st4l1k
# export LANG=ru_RU.UTF-8
# ls *.pdf
������������ ���������� ������������ �� vim.pdf
# ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
...
AoD314
() автор топика
Ответ на: комментарий от st4l1k

И что?
mike@localhost ~ $ export LC_ALL=en_US.UTF-8
mike@localhost ~ $ export LANG=en_US.UTF-8
mike@localhost ~ $ echo «$(locale) i can type on english я могу печатать по-русски»
LANG=en_US.UTF-8
LC_CTYPE=«en_US.UTF-8»
LC_NUMERIC=«en_US.UTF-8»
LC_TIME=«en_US.UTF-8»
LC_COLLATE=«en_US.UTF-8»
LC_MONETARY=«en_US.UTF-8»
LC_MESSAGES=«en_US.UTF-8»
LC_PAPER=«en_US.UTF-8»
LC_NAME=«en_US.UTF-8»
LC_ADDRESS=«en_US.UTF-8»
LC_TELEPHONE=«en_US.UTF-8»
LC_MEASUREMENT=«en_US.UTF-8»
LC_IDENTIFICATION=«en_US.UTF-8»
LC_ALL=en_US.UTF-8 i can type on english я могу печатать по-русски

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

Скопипасть в консоль какой-нить русский текст из браузера. Может у тебя действительно названия файлов в однобайтной кодировке какой-нибудь.

imul ★★★★★
()
Ответ на: комментарий от imul
aod314@gentoo ~ $ export LC_ALL=en_US.UTF-8
aod314@gentoo ~ $ export LANG=en_US.UTF-8
aod314@gentoo ~ $ echo "$(locale) i can type on english ? ???? ???????? ??-??????"
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8 i can type on english ? ???? ???????? ??-??????
AoD314
() автор топика
Ответ на: комментарий от imul

не удивил LANG This variable determines the locale category for native language, local customs and coded character set in the absence of the LC_ALL and other LC_* (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) environment variables. This can be used by applications to determine the language to use for error messages and instructions, collating sequences, date formats, and so forth.

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

Блин, я упустил, что ты в DE, а не в голой консоли. Ну, консоль у тебя теперь русифицирована :) . Переключение языков - Alt (левый или правый, не помню).

Пожалуйста, сделай следующее.
1. Перегрузись.
2. У тебя графический логин? Если да, переключить в голую консоль (Ctrl+Alt+F2), залогинься. Если нет - не спеши делать startx.
3. Посмотри теперь список этих файлов с помощью ls. Если кракозябры/вопросики - это проблема в именах файлов (я еще не удивлюсь, если ты их взял из какого-то zip/rar/... архива). Если отображаются нормально - проблема в GUI. Тогда хоть открой нам какой у тебя gui: kde, gnome или что-то еще.

P. S. В любом случае рекомендую в make.conf добавить флаги iconv icu m17n-lib и обновит систему с помощью `emerge --newuse --deep @world `

Kroz ★★★★★
()
Ответ на: комментарий от imul
$ locale -a | grep 'ru_RU'
ru_RU.cp1251
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
AoD314
() автор топика
Ответ на: комментарий от AoD314

В голой консоле русские буквы отображается квадратами ...

А теперь в GUI создай файл с русским название, по Ctrl+F2 в консоль и посмотри его (если не знаешь - возврат в GUI по Ctrl+Alt+F7 ). И наоборот: в консоли создай файл на русском, потом посмотри в GUI. Уверен, что будет все впорядке.

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

М-да, думать надо.

Ладно. Вот мои предложения:
1. Добейся, чтобы в консоли (голой) русский был. Чтобы а) мог печатать по-русски, б) русский текст отображался, проверь вот так:
$ LC_MESSAGES=«ru_RU.UTF-8» find -help
в) ну, сделай файл с русским именем:
$ touch файл.txt
$ ls

Да, убедись, что переменная LC_ALL у тебя пустая!!!

Если пункт 1 не прошел - давай сначала решим его.

2. Убедись, что проблема все еще присутствует: зайди в GUI и посмотри файл в а) файловом менеджере б) терминале.

3. Все-таки добавь флаги iconv icu m17n-lib в make.conf и обнови систему:
$ emerge --newuse --deep @world
$ revdep-rebuild -i

И в любом случае два вопроса:
4. Какая у тебя DE?
5. Какой шрифт в терминале?

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

Давай поспорим на почку, что я то же самое успешно сделаю в голой консоли?

Скопипастить из браузера? В голой консоли? Как?

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

Копипастить я в гуёвую предлагал.

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

echo «$(locale) i can type on english я могу печатать по-русски» > /dev/tty1

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

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

Это не копипаста, это перенаправление stdout. Копипаста - это когда можешь вставить в командную строку, например, как параметр. И из WEB так не получится.

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

И что? Для консоли будет какая-то разница?
Задача-то всё-равно решается. Копипастишь в терминал и оттуда перенаправляешь в консоль. Или тебе домотаться больше не до чего?

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

Я не доматываюсь. Просто отсутствие буфера обмена и соотв. механизмов - одно из трех самых главных недостатков консоли. Думал, может есть способ.

Задача-то всё-равно решается. Копипастишь в терминал и оттуда перенаправляешь в консоль. Или тебе домотаться больше не до чего?

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

P. S. Только не надо wget | sed | xargs .

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

Просто отсутствие буфера обмена

эм... А gpm и среднюю кнопку мыши при копировании, допустим, из links уже отменили? o_O

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

setfont с кирилицей какой небудь, гдето здесь они /usr/share/consolefonts

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

Из GUI File Manager - создается нормально. А вот из консоли и терминала нет. Отображается так же плохо.

AoD314
() автор топика

Так что мне попробовать?

AoD314
() автор топика
Ответ на: комментарий от imul
echo "$(locale) i can type on english я могу печатать по-русски" > /dev/tty1

Так пробовал, терминал меняет русские буквы на "???" и такие же знаки я вижу в терминале1.

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

Лучше сделать файлик с заведомо верным содержимым в utf-8 и в консоли сделать cat file.txt, чтобы проверить хотя бы отображение.
Но, скорее у тебя что-то криво собрано.

Вот например:
ldd /bin/bash
linux-vdso.so.1 (0x00007ffff17ff000)
libreadline.so.6 => /lib64/libreadline.so.6 (0x00007fce099e9000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007fce09783000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fce0957f000)
libc.so.6 => /lib64/libc.so.6 (0x00007fce091cf000)
/lib64/ld-linux-x86-64.so.2 (0x00007fce09c2f000)

$ emerge -pv bash ncurses

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild R ] sys-libs/ncurses-5.9-r2:5 USE=«cxx gpm trace unicode -ada -debug -doc -minimal -profile -static-libs» 0 kB
[ebuild R ] app-shells/bash-4.2_p37 USE=«net nls plugins (readline) -afs -bashlogger -examples -mem-scramble -vanilla» 0 kB

imul ★★★★★
()
Ответ на: комментарий от imul
# ldd /bin/bash
	linux-vdso.so.1 (0x00007fff4149e000)
	libreadline.so.6 => /lib64/libreadline.so.6 (0x00007fa82411f000)
	libncurses.so.5 => /lib64/libncurses.so.5 (0x00007fa823ec9000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fa823cc5000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fa82391d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fa824366000)
AoD314
() автор топика
Ответ на: комментарий от AoD314

А ncurses собрана с +unicode?
$ qlist ncurses | grep «lib64/lib»
/lib64/libncursesw.so.5
/lib64/libncurses.so.5
/lib64/libncursesw.so.5.9
/lib64/libncurses.so.5.9
/usr/lib64/libform.so.5.9
/usr/lib64/libncurses.so
/usr/lib64/libpanelw.so.5.9
/usr/lib64/libform.so
/usr/lib64/libmenuw.so.5.9
/usr/lib64/libpanel.so.5.9
/usr/lib64/libpanelw.so.5
/usr/lib64/libformw.so
/usr/lib64/libform.so.5
/usr/lib64/libncursesw.so
/usr/lib64/libformw.so.5
/usr/lib64/libpanel.so
/usr/lib64/libmenu.so.5
/usr/lib64/libmenuw.so
/usr/lib64/libmenu.so
/usr/lib64/libmenuw.so.5
/usr/lib64/libpanel.so.5
/usr/lib64/libformw.so.5.9
/usr/lib64/libpanelw.so
/usr/lib64/libcurses.so
/usr/lib64/libmenu.so.5.9

imul ★★★★★
()
Ответ на: комментарий от imul
/usr/lib64/libmenuw.so.5.9
/usr/lib64/libformw.so.5.9
/usr/lib64/libpanel.so.5.9
/usr/lib64/libpanelw.so.5.9
/usr/lib64/libcurses.so
/usr/lib64/libform.so
/usr/lib64/libncursesw.so
/usr/lib64/libmenu.so.5.9
/usr/lib64/libform.so.5
/usr/lib64/libformw.so
/usr/lib64/libformw.so.5
/usr/lib64/libncurses++.a
/usr/lib64/libform.so.5.9
/usr/lib64/libncurses.so
/usr/lib64/libpanel.so.5
/usr/lib64/libmenuw.so.5
/usr/lib64/libmenu.so
/usr/lib64/libpanelw.so
/usr/lib64/libncurses++w.a
/usr/lib64/libmenuw.so
/usr/lib64/libmenu.so.5
/usr/lib64/libpanelw.so.5
/usr/lib64/libpanel.so
/lib64/libncurses.so.5.9
/lib64/libncursesw.so.5.9
/lib64/libncursesw.so.5
/lib64/libncurses.so.5
AoD314
() автор топика

Решилось.

# cat /etc/locale.gen
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8

# cat /etc/env.d/02locale
LANG="en_US.UTF-8"
LC_NUMERIC=POSIX

# cat /etc/conf.d/consolefont
consolefont="LatArCyrHeb-16"

# cat /etc/conf.d/keymaps | grep -iv "^#" | grep "\w"
keymap="us"
windowkeys="yes"
extended_keymaps=""
dumpkeys_charset=""
fix_euro="no"

# cat /etc/environment
LANG="en_US.UTF-8"

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