LINUX.ORG.RU

Изменились буквы при копировании скрипта

 ,


0

1

Здравствуйте. Подскажите, пожалуйста, скопировал скрипт с одной машины на другую через scp, и русские буквы стали вот такими. Как поправить?

# ▒^wде▒^a▒^l ни▒^gего не ▒^b▒^`огай :)

выделить и вставить, тоже все кривое



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

Введи в консоле locale -a и скинь сюда.

За одно расскажи что за дистрибутив.

Как уже сказали, у тебя на второй системе не сконфигурирована ru_RU.* локальной.

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

Откуда копировал

C
C.UTF-8
en_US.utf8
POSIX

Release:        20.04

куда копировал

C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL
en_IL.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US
en_US.iso88591
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX
ru_RU.utf8

Release:        20.04

сделал так

    Check which locales are supported: locale -a
    Add the locales you want (for example ru
    ): sudo locale-gen ru_RU sudo locale-gen ru_RU.UTF-8
    Run this update command: sudo update-locale 

появилось это

C
C.UTF-8
en_US.utf8
POSIX
ru_RU
ru_RU.iso88595
ru_RU.utf8

все равно при копировании вот это

# Здесь ничего не трогай :)

превращается вот в это

# ▒^wде▒^a▒^l ни▒^gего не ▒^b▒^`огай :)

но если сделать так

cat file

то все в норме

# Здесь ничего не трогай :)

Подскажите что поправить?

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

Помимо кодировки, должен быть «подходящий шрифт».

Поэтому, везде используй латинские буквы. В крайнем случае пиши транслитом. Вдвойне актуально, если нет опыта. Русские буквы оставь поэтам. Иначе так и будешь подскальзываться на этой «банановой кожуре».

Кстати, этому научила еще винда.

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

откуда скопировал

file iptables.sh
iptables.sh: Bourne-Again shell script, UTF-8 Unicode text executable

куда скопировал

file iptables.sh
iptables.sh: Bourne-Again shell script, UTF-8 Unicode text executable
xohox
() автор топика
Последнее исправление: xohox (всего исправлений: 1)
Ответ на: комментарий от xohox

Так, стоп.

Если у тебя cat выводит всё верно, то в какой программе ты видишь «кривой» текст?

Может проблема со шрифтами?

И что в echo $LANG¿

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

кривое все в nano

и в скрипте есть поле - тема в письме, оно приходит на почту кривое. получается что cat понимает кодировку, а nano и почта нет

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

Тут в соседней теме похожая проблема

Русский язык в текстовом файле стал вопросами

upd: почитал форумы Gentoo, нужно nano с поддержкой iconv пересобирать

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

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

cat ничего не понимает, он просто выводит поток байтов. Их интерпретация лежит на принимающей стороне.

akk ★★★★★
()
Ответ на: комментарий от IIIypuk
nano --version

GNU nano, version 6.0
 (C) 1999-2011, 2013-2021 Free Software Foundation, Inc.
 (C) 2014-2021 the contributors to nano
 Compiled options: --enable-utf8

Последняя строка

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

где все нормальное

Compiled options: --disable-libmagic --enable-utf8

где все кривое

Compiled options: --disable-libmagic --enable-utf8

А что является принимающей стороной при выводе на экран?

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

Еще раз, очень внимательно.

У браузера - свой шрифт, у почты - свой, у графического редактора - свой, у эмулятора терминала - свой, у консоли - свой.

А будешь бездумно перекодировать, вообще так запутаешь, что ни одна собака не разберет.

И почти универсальный ответ - установи Midnight commander.

Со шрифтами это не поможет, но поможет быстро определиться с кодировками.

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

Я не перекодировал, я с одной тачки на другую файл скопировал. Причина в этом. Я не могу его в нормальный вид привести. Вся суета из-за этого. Как его привести в читательный вид?

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

Третий раз. Копирование ничего не меняет, на то оно и копирование, а не преобразование. Приводить ничего не надо. Как? MC.

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

Подскажите, пожалуйста, что нужно в MC увидеть/поправить?

Открыл, потыкал, но хз что делать)

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

Потыкал… Первым делом, всегда и везде, тыкай F1 - справка.

Например.

F3 - открыть файл в просмотрщике.

F4 - открыть файл в редакторе.

Alt+e - откроется окно выбора кодировки.

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

Midnight commander костыль в нём только архивы удобно распаковывать-просматривать, но unzip-unrar-tar всё равно быстрее.

Главное чтобы шрифты локаль были правильные на твоей машине, а на подключаемой машине правильный $LANG выдавало

для дебиан: apt install locales; dpkg-reconfigure locales

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

архивы удобно распаковывать-просматривать

Уже только этого более-чем достаточно. Но это всего лишь, одно из…

В частности, здесь мы говорим о кодировках, немного о редакторах. А тут, все в одном флаконе, независимо от GUI, системы, терминала-консоли.

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

Выбрал все в dpkg-reconfigure locales

ничего не изменилось

# ▒^wде▒^a▒^l ни▒^gего не ▒^b▒^`огай :)

Оказалось что при попытке написать текст на русском в файле получается вот что ▒^g▒^bо за недема▒^o ▒^e▒^`ен▒^l

но в консоли буквы нормальные/читаемые

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

сделал, глюки со шрифтами ушли ушли после этого

C
C.UTF-8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IL
en_IL.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
POSIX

всем спасибо)

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

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

s-warus ★★★
()
Ответ на: комментарий от IIIypuk

md5sum имя_скрипта
на каждой из машин с последующим сравнением полученных хэшей легко ответит на вопрос, был ли модифицирован файл при копировании.

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

локаль это правильно выставленные переменные окружения, то есть ты в других дистрибутивах можешь задать их через export, и после export все порождённые процессы будут иметь правильную локаль, дурацкий способ, но рабочий. Так же переменные можно задать в /etc/environment и /etc/environment.d/твойфайл, но в этом случае всё заработает после перезапуска.

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