LINUX.ORG.RU

Поломалась кодировка после обновления

 ,


0

3

Обновил генту на свою голову! Почему-то в нормальных терминалах кириллица отображается правильно (т.е. виноваты явно не параметры загрузки ядра), а вот в иксовых (xterm и xfce4-terminal), несмотря на явное указание в настройках локали КОИ8-Р, отображаются «крякозябры». Листинг директории с торрентами отображает кириллицу, т.е. вместо кошерной кодировки зачем-то иксовые терминалы решили, что у меня хрюникод по умолчанию! При этом диалоги open/save отображают КОИ8-Р нормально.

Интересно, что это за бред такой? Как вообще такое могло случиться? Неужто поломали что-то в GTK?

☆☆☆☆☆

Ответ на: комментарий от Eddy_Em

И не надо мне цитировать руководства по локализации 15-летней давности! В консоли у меня КОИ8-Р работает. И об этом я тоже писал.

Вы правы, но проблемы те же, что были и пятнадцать лет назад …

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

Похоже, постоянно находились рукожопые умники типа вертухая, которые решали за всех, что «восьмибитные локали — прошлый век», и ломали все нафиг!

А потом они поломают иксы: мол, зачем они вам, если есть вяленый?

И т.д., и т.п.

Я же не собираюсь быть на наркоманской хипстерской волне! Я хочу, чтобы моя система стабильно работала, как и 18 лет назад!!!1111

Ломать что-то, надежно работающее годами, лишь ради новизны — это идиотизм, а не прогресс!

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

Я хочу

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

Ты решил что софт какой он был лет 15 назад легко поддерживать. Разработчики не согласны.

Я говорю о новых версиях, которые ещё нужно разрабатывать. В каком направлении решать тем кто их пишет. Старые версии как лежали так и лежат, если ты будешь ими пользоваться, то это ничего ни для кого не стоит

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

Я же не собираюсь быть на наркоманской хипстерской волне! Я хочу, чтобы моя система стабильно работала, как и 18 лет назад!!!1111

А кто против?
Диалог веду лишь в рамках треда … /без всяких намеков/ .

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

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

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

Я хочу, чтобы моя система стабильно работала, как и 18 лет назад!!!1111

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

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

Судя по всему эта проблема «хроническая» и касается не только https://wikichi.ru/wiki/KOI8-R, но и иных кодировок …

Нужно разобраться почему в других дистрибутивах этой проблемы нет.
Скорее всего, что-то с пакетами, сборкой, …

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

А при чем здесь π?

А что, в кои8р есть буква π?

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

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

Нет локали, нет проблемы.

 $ locale -a    
C
en_US.utf8
POSIX
ru_RU.utf8
anonymous
()
Ответ на: комментарий от Vladimirmir

Здесь два варианта: либо мейнтейнеры что-то нарукожопили в новых иксах, и там отвалилась поддержка 8-битных локалей, либо разработчики иксов что-то нарукожопили. Во втором случае в других свежих дистрах тоже будет эта проблема. Скажем, в апрельской бубунте…

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: удаленный комментарий

Не бойся, у них силенок не хватит меня по полу размазать!

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

Тебе уже размазали по полу разрабы иксов или чего-то там, доказав что все вертели КОИ8, даже наверное не покрыв их тестами

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

Еще вчера проверял: виртуальные терминалы считают, что у меня utf8, какую бы настройку кодировки я ни выбрал. Если менять локаль, то соответственно может выводить коды. Создаю два файлика «тест1» и «тест2». В локали С они отображаются так:

''$'\324\305\323\324''1'  ''$'\324\305\323\324''2'
Точно так же отображаются в ru_RU.utf8. А вот так - в ru_RU.koi8-r
����1  ����2
Т.е. оно пытается, но у него ничего не выходит на каком-то этапе.

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

Тебе уже размазали по полу разрабы иксов или чего-то там, доказав что все вертели КОИ8, даже наверное не покрыв их тестами

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

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

кодировку с постоянным числом бит на символ

Так это как раз однобайтные кодировки и есть.

В юникоде, внезапно, появляются модификаторы из-за которых даже в UTF-16 и UTF-32 у разных символов может быть разное число байт.

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

Строки - это массивы символов. В Си нет не строк, а строкового типа.

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

Теперь остаётся разобраться, какого черта оно так происходит!

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

Божемой да прочитай ты уже зачем все те переменные нужны, каждая по отдельности и как они связаны с LANG и LC_ALL

https://pubs.opengroup.org/onlinepubs/7908799/xbd/envvar.html

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

У тебя как будто локаль, в которой запущен эмулятор терминала (xfce4-terminal) имеет кодировку utf-8, а локаль, в которой запущен шелл из эмулятора, имеет кодировку koi8-r. Такое бывает, когда ~/.profile или ~/.bashrc указана koi8-r, а в глобальном /etc/environment указана utf-8.

Кроме того, у xfce4-terminal в настройках на закладке Advanced можно явно задать кодировку терминала. Может быть там явно указано UTF-8?

iliyap ★★★★★
()

Вполне допускаю, что у автора окажется какая-нибудь хитроватая проблема со шрифтами, как и предположил воооон тот анон на первой странице. Жаль у меня нет Gentoo, чтобы проверить кои8. Гентушники (обновлённые) - к вам обращаюсь - сделайте у себя кои8 и проверьте гипотезу автора - если повторения ошибки не будет - значит автор что-то перемудрил у себя, а если проблема будет проявляться у всех идентично, значит и правда поломали иксы и можно смело накидывать отчётов об ошибке всем форумом.

По другому, судя по всему, с этой проблемой не разобраться. Я бы сам в виртуалке запустил Gentoo, обновился и проверил работоспособность кои8, но у анона нет времени на это, извините. Так что просто даю вам план и задачу к выполнению. Действуйте.

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

Глобальная локаль выставлена правильно:

eselect locale list
Available targets for the LANG variable:
  [1]   C
  [2]   C.utf8
  [3]   POSIX
  [4]   ru_RU.koi8r *
  [5]   ru_RU.utf8
  [ ]   (free form)

В ~/.bashrc выставлялась КОИ8, убрал — поведение то же самое. По ps e в окружении иксов и эмулятора терминала локаль правильная. В глобальном /etc/environment вообще пусто. В /etc/environment.d/10-gentoo-env.conf написано касательно языка:

LANG=ru_RU.koi8r
LC_NUMERIC=C
Погрепал рекурсивно по etc на юникод:
grep -Ri utf8 2>/dev/null
ssl/openssl.cnf:# utf8only: only UTF8Strings (PKIX recommendation after 2004).
ssl/openssl.cnf:# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
ssl/openssl.cnf:# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
ssl/openssl.cnf:string_mask = utf8only
ssl/openssl.cnf.dist:# utf8only: only UTF8Strings (PKIX recommendation after 2004).
ssl/openssl.cnf.dist:# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
ssl/openssl.cnf.dist:# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
ssl/openssl.cnf.dist:string_mask = utf8only
fonts/conf.d/65-nonlatin.conf:			<family>BPG UTF8 M</family> <!-- georgian -->
fonts/conf.d/65-nonlatin.conf:			<family>BPG UTF8 M</family> <!-- georgian -->
fonts/conf.avail/65-nonlatin.conf:			<family>BPG UTF8 M</family> <!-- georgian -->
fonts/conf.avail/65-nonlatin.conf:			<family>BPG UTF8 M</family> <!-- georgian -->
texmf/web2c/texmf.cnf:TEXINPUTS.utf8mex       = $TEXMFDOTDIR;$TEXMF/tex/{mex,plain,generic,latex,}//
texmf/web2c/texmf.cnf:% Only values utf8 or utf-8 are meaningful. Other values are simply
texmf/web2c/texmf.cnf:% If command_line_encoding = utf8 or command_line_encoding = utf-8,
texmf/texmf.d/20sizes.cnf:% Only values utf8 or utf-8 are meaningful. Other values are simply
texmf/texmf.d/20sizes.cnf:% If command_line_encoding = utf8 or command_line_encoding = utf-8,
texmf/texmf.d/10standardpaths.cnf:TEXINPUTS.utf8mex       = $TEXMFDOTDIR;$TEXMF/tex/{mex,plain,generic,latex,}//
java-config-2/current-system-vm/jre/lib/classlist:sun/reflect/UTF8
java-config-2/current-system-vm/jre/lib/flavormap.properties:UTF8_STRING=text/plain;charset=UTF-8;eoln="\n";terminators=0
java-config-2/current-system-vm/include/classfile_constants.h:    JVM_CONSTANT_Utf8                   = 1,
conf.d/postgresql-9.3:PG_INITDB_OPTS="--encoding=UTF8"
conf.d/postgresql-9.5:PG_INITDB_OPTS="--encoding=UTF8"
conf.d/postgresql-9.6:PG_INITDB_OPTS="--encoding=UTF8"
apache2/modules.d/00_languages.conf:AddCharset UTF-8			.utf8

В общем, нигде никакого криминала не вижу. Но не работает, зараза!

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

Вряд ли шрифты: GTK'шные файловые диалоги показывают кириллицу в путях. А Qt'шные вообще не отображают таких файлов. В эмуляторах терминала вот как: xfce4-terminal показывает вопросы, а xterm вроде такого: «ÐÒÅ×ÅÄ».

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

А там ?

Кроме того, у xfce4-terminal в настройках на закладке Advanced можно явно задать кодировку терминала. Может быть там явно указано UTF-8?

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

Естественно, там КОИ8 указана. Но как бы я ни менял в настройках кодировку, в терминале ничего не изменяется, как будто по дефолту стоит юникод. Это подтверждает и то, что ls | iconv -f koi8-r -t utf8 выдает-таки кириллицу в путях. А вот на эту же команду xterm выдает просто другой тип «крякозябр».

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

Попробуй выставить там не по умолчанию а как на картинке показывал и перезапусти

Но как бы я ни менял в настройках кодировку, в терминале ничего не изменяется

Перезапускать надо!

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

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

Городские легенды.

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

Скриншот я нагуглил, ибо помнил, что оно там точно есть и гугл не примет меня за идиота.

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

дык и правда легенда :) там столько легаси

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

С поставленной галочкой будет Active code page: 65001. И?

ipconfig /all & route print выдаст бнопню. Причем, ЕМНИП, независимо от состояния галочки.

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

Сейчас ввёл, независимо от chcp команда ipconfig /all & route print всё выводит правильно, вот начало, дальше тоже читаемо.

Ethernet adapter Сетевое подключение Bluetooth 6:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Bluetooth Device (Personal Area Network) #6
   Physical Address. . . . . . . . . : 00-1A-7D-DA-71-13
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
===========================================================================
Interface List
  4...00 06 1c 04 1f 03 ......USB to Ethernet Adapter
 17...0a 00 27 00 00 11 ......VirtualBox Host-Only Ethernet Adapter
 12...1c 1b 0d a9 71 db ......Realtek PCIe GbE Family Controller
 13...00 1a 7d da 71 13 ......Bluetooth Device (Personal Area Network) #6
  1...........................Software Loopback Interface 1
===========================================================================

А так Windows и KOI8-R поддерживает.

  1. Создал файл с текстом «Привет KOI8-R» в KOI8-R.

  2. Ввёл chcp 20866

  3. type тест.txt Привет KOI8-R

А в utf8 показывает так:

chcp 65001
type тест.txt
������ KOI8-R

А в cp1251 так:

chcp 1251
type тест.txt
рТЙЧЕФ KOI8-R

Так что Windows 10 20H2 всё ещё поддерживает KOI8-R из коробки, хотя кодировки cp1251 и UTF8 тоже поддерживаются…

Вот полный список кодировок: https://docs.microsoft.com/en-us/windows/win32/intl/code-page-identifiers

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