Что-то случилось с кодировкой

Модератор: Модераторы разделов

awua
Сообщения: 594

Что-то случилось с кодировкой

Сообщение awua »

Всем доброго утра!

Такая ерунда с кодировкой.

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

$ ls -l
-rw-rw-rw- 1 alex users   0 сен 13 09:50 пример.txt

$ LANG=C ls -l
-rw-rw-rw- 1 alex users   0 сеÐ 13 09:50 ????????????.txt

Систему обновлял. Не помогло. Когда началось, не могу сказать. Всё работало раньше. Но вчера, кажется, обнаружил то, что не все программы корректно отображают текст с LANG=C. Какие нормально, а какие — нет.

Ещё пример:

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

$ cal
    Сентябрь 2015
Пн Вт Ср Чт Пт Сб Вс
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

$ LANG=C cal
Сентябрь 201
П В С Ч П С В
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

$ LANG=en_US cal
   September 2015
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

С "ls" там сентябрь неправильно написан и кириллическое имя файла не кажет. А с календарём вообще непонятная система (см. сами).

Как можно поправить, подскажите.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18816
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Что-то случилось с кодировкой

Сообщение Bizdelnick »

Не понимаю, что Вас удивляет в поведении ls. Юникодные символы не могут отображаться в сишной локали.
С cal — действительно странно.
Покажите вывод locale.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

awua
Сообщения: 594

Re: Что-то случилось с кодировкой

Сообщение awua »

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

$ 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=C
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=
Спасибо сказали:

Аватара пользователя
SinClaus
Сообщения: 1951
Статус: Мучитель Мандривы
ОС: Arch,BSD

Re: Что-то случилось с кодировкой

Сообщение SinClaus »

Таки чего странного то замечено, на что жалуетесь, больной?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18816
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Что-то случилось с кодировкой

Сообщение Bizdelnick »

SinClaus писал(а):
14.09.2015 08:38
Таки чего странного то замечено

Например то, что cal с LANG=C пытается сказать что-то по-русски.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18816
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Что-то случилось с кодировкой

Сообщение Bizdelnick »

awua
А LANG=C locale что скажет?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Что-то случилось с кодировкой

Сообщение Hephaestus »

Чтобы cal заговорил по-английски нужно сделать LC_TIME=C.
При LANG=C значение LC_TIME не меняется. По крайней мере, в моей слаке на данный момент именно так. Правильно это или нет, судить не берусь.
Хотя при LANG=en_us.UTF-8 значение LC_TIME у меня тоже не меняется, однако cal начинает говорить по-английски. Мда, интересно.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18816
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Что-то случилось с кодировкой

Сообщение Bizdelnick »

Hephaestus писал(а):
14.09.2015 11:48
При LANG=C значение LC_TIME не меняется. По крайней мере, в моей слаке на данный момент именно так. Правильно это или нет, судить не берусь.

У меня меняется:

Shell

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

% cal
   Сентябрь 2015
Вс Пн Вт Ср Чт Пт Сб
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

% LANG=C cal
   September 2015
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

% 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=
% LANG=C locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
%

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Что-то случилось с кодировкой

Сообщение Hephaestus »

Hephaestus писал(а):
14.09.2015 11:48
Хотя при LANG=en_us.UTF-8 значение LC_TIME у меня тоже не меняется, однако cal начинает говорить по-английски.
А вот это я наврал.
Локаль en_us.UTF-8 не существует в моей системе. Есть en_US.UTF-8
При выставлении любой локали неизменными остаются
LC_TIME=ru_RU.UTF-8
LC_COLLATE=ru_RU.UTF-8
и cal говорит по-русски.
Но если выставить несуществующую локаль, то cal говорит по-английски.


P.S. В моём случае дело в multilibs.
На ноутбуке у меня нету multilibs и там всё нормально: значения переменных меняются и cal меняет свой язык.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Что-то случилось с кодировкой

Сообщение s.xbatob »

сдаётся мне, у автора вопроса в environment явно выставлены какие-нибудь LC_*
Спасибо сказали:

awua
Сообщения: 594

Re: Что-то случилось с кодировкой

Сообщение awua »

Bizdelnick писал(а):
14.09.2015 10:42
awua
А LANG=C locale что скажет?

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

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


s.xbatob писал(а):
14.09.2015 12:49
сдаётся мне, у автора вопроса в environment явно выставлены какие-нибудь LC_*

У меня нет DE, только IceWM.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18816
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Что-то случилось с кодировкой

Сообщение Bizdelnick »

Действительно, вот оно:
awua писал(а):
14.09.2015 18:20
LC_TIME=ru_RU.UTF-8
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Что-то случилось с кодировкой

Сообщение NickLion »

awua писал(а):
14.09.2015 18:20
s.xbatob писал(а):
14.09.2015 12:49
сдаётся мне, у автора вопроса в environment явно выставлены какие-нибудь LC_*

У меня нет DE, только IceWM.

DE тут ни при чём, речь о переменных окружения: env
Спасибо сказали:

Аватара пользователя
SinClaus
Сообщения: 1951
Статус: Мучитель Мандривы
ОС: Arch,BSD

Re: Что-то случилось с кодировкой

Сообщение SinClaus »

Shell

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

$ uname -a
Linux XXXXX 4.1.6-1-ARCH #1 SMP PREEMPT Mon Aug 17 08:52:28 CEST 2015 x86_64 GNU/Linux

$ lang=ru_RU.UTF-8 cal
   September 2015
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

$ LC_TIME="ru_RU.UTF-8" cal
    Сентябрь 2015
Пн Вт Ср Чт Пт Сб Вс
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Спасибо сказали:

Аватара пользователя
yars
Сообщения: 1144
Статус: Slacker!
ОС: Slackware64-current

Re: Что-то случилось с кодировкой

Сообщение yars »

Не lang, но LANG. И вывод locale бы не помешал.
Slackware64-current/Xfce 4.12/Acer TravelMate 5760
-------------
Registered Linux User #557010
Спасибо сказали:

awua
Сообщения: 594

Re: Что-то случилось с кодировкой

Сообщение awua »

Bizdelnick писал(а):
14.09.2015 18:29
Действительно, вот оно:
awua писал(а):
14.09.2015 18:20
LC_TIME=ru_RU.UTF-8


А почему эта переменная не меняется при LANG=C?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18816
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Что-то случилось с кодировкой

Сообщение Bizdelnick »

awua писал(а):
19.09.2015 11:30
А почему эта переменная не меняется при LANG=C?

Потому что, видимо, как и писал s.xbatob, она прописана в окружении.
env | grep LC
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Что-то случилось с кодировкой

Сообщение Hephaestus »

Bizdelnick писал(а):
19.09.2015 11:54
Потому что, видимо, как и писал s.xbatob, она прописана в окружении.
env | grep LC
Подтверждаю

$env | grep LC

LC_COLLATE=ru_RU.UTF-8 LC_TIME=ru_RU.UTF-8

В моём случае это прописано в /etc/profile.d/lang.sh
А вот зачем я это делал, по какой инструкции - не помню, хоть убей.

Стало быть, зря я выше грешил на multilib. Они тут ни при чём.


Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали: