кодировка файла

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

кодировка файла

Непрочитанное сообщение ASD » 2009-01-27 13:20:58

есть шара на самбе:

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

dos charset = cp1251
unix charset = cp1251
display charset = cp1251
создаю папку win-клиентом
Новая папка



Настройки локали

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

FS# locale
LANG=ru_RU.CP1251
LC_CTYPE="ru_RU.CP1251"
LC_COLLATE="ru_RU.CP1251"
LC_TIME="ru_RU.CP1251"
LC_NUMERIC="ru_RU.CP1251"
LC_MONETARY="ru_RU.CP1251"
LC_MESSAGES="ru_RU.CP1251"
LC_ALL=
потом эту папку

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

find $folder -type f -print0 | xargs -0 tar rvf $tarfile > /dev/null

#или так...

7za a -tzip $zipfile $folder
Бообщем если win-клиент забирет этот архив и распакует....он увидит
оПЧБС РБРЛБ

что не так?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: кодировка файла

Непрочитанное сообщение hizel » 2009-01-27 15:33:41

нативный форамт 7zip хранит имена в UTF-16, что зело удобно, остальные форматы через пень колоду
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-27 16:08:35

hizel писал(а):нативный форамт 7zip хранит имена в UTF-16, что зело удобно, остальные форматы через пень колоду
так и он не решает проблемы...при разархивации кирилица не отображается....

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: кодировка файла

Непрочитанное сообщение hizel » 2009-01-27 16:34:14

ну если вы указываете -tzip конечно не решает :-D
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-27 16:43:48

hizel писал(а):ну если вы указываете -tzip конечно не решает :-D
теперь так..._________ ________.txt
эт тоже не решение...объясните

1. локль я устанавливаю в cp1251
2. в самбе unix charset = ср1251...говорю пиши в ср1251
3. tar ориентируется на локаль...она (п.1) ср1251
4. на выходе разархивирую получаю KOI8-R

как такое получается???

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: кодировка файла

Непрочитанное сообщение hizel » 2009-01-27 17:19:45

а ls folder в нормальной кодировке?
версия samba какая?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-27 19:28:07

hizel писал(а):а ls folder в нормальной кодировке?
версия samba какая?
да, ls отображает читабельном виде...сам не пойму как так получается...mc криво
samba 3.0.32

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: кодировка файла

Непрочитанное сообщение zg » 2009-01-27 22:36:08

ASD писал(а):dos charset = cp1251
чего ради cp1251?

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

   unix charset = koi8-r
   dos charset = cp866
при работе с файлами винда cp866 использует, а не cp1251,

LC_ALL тоже надо выставлять

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

zg# locale
LANG=
LC_CTYPE="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_ALL=ru_RU.KOI8-R
zg#

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 6:54:33

zg писал(а):
ASD писал(а):dos charset = cp1251
чего ради cp1251?
эт уже агония... :smile:
zg писал(а):

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

   unix charset = koi8-r
   dos charset = cp866


при работе с файлами винда cp866 использует, а не cp1251,

У меня винда все верно отрабатывает, и так...имеется ввиду когда на фряхе "русские" файлы заворачиваю в архив они на клиентской виндовой машине разархивируются не в той кодировке...про tar не понятно...он вроде как смотрит на локаль для компановки...и получается что локаль в CP1251, unix charset = ср1251....а tar все равно использует koi8-r
zg писал(а): LC_ALL тоже надо выставлять

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

zg# locale
LANG=
LC_CTYPE="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_ALL=ru_RU.KOI8-R
zg#
не помогает...

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 8:21:55

Чет, я запутался...помогите разобраться

сейчас у меня:

1. локаль

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

LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8
2. smb.conf

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

dos charset = cp866
unix charset = UTF-8
display charset = LOCALE
3. в браузере виндового клиента создаю папку "Новая папка" и файл "Текстовый документ.txt". В браузере она отображается нормально.

4. в консоли фряхи:

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

FS# ls /fs/GB/CURDAY
п?п?п?п?я? п©п?п©п?п?
FS#
5. делаю:

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

find $folder -type f -print0  | xargs -0 tar rvf $file > /dev/null
6. копирую на клиентскую виндовую машину архив, разархивирую....название папки:

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

Новая папка
Гуру помогите решить вопрос....

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: кодировка файла

Непрочитанное сообщение zg » 2009-01-28 8:40:26

ASD писал(а):он вроде как смотрит на локаль для компановки
гм... он смотрит в настройки консоли, локаль влияет только на сообщения. Если имя файла было в KOI8-R, то и в архиве оно будет в KOI8-R. Тар кодирует имя как есть, 7z и rar переводят в юникод, правда криво.

Что б на винде архив читался нормально, имена файлов надо перекодировать в windows-1251

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

zg# touch "Привет мир\!"
zg# convmv -f KOI8-R -t WINDOWS-1251 Привет\ мир\! --notest
Your Perl version has fleas #37757
mv "./Привет мир!"      "./оПХБЕР ЛХП!"
Ready!
zg# tar cvf hello.tar оПХБЕР\ ЛХП\!
a оПХБЕР ЛХП!
zg#
hello.tar
(2.5 КБ) 13 скачиваний

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: кодировка файла

Непрочитанное сообщение zg » 2009-01-28 8:44:29

ASD писал(а):4. в консоли фряхи:
локаль и консоль не одно и тоже

Это мой конфиг

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

[global]
   workgroup = MYGROUP
   server string = Samba Server
   security = share
;   hosts allow = 192.168.1. 192.168.2. 127.
   unix charset = koi8-r
   dos charset = cp866
консоль в koi8-r всё отлично работает, никаких проблем с кодировкой нет

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 9:00:17

zg писал(а):
ASD писал(а):4. в консоли фряхи:
локаль и консоль не одно и тоже

Это мой конфиг

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

[global]
   workgroup = MYGROUP
   server string = Samba Server
   security = share
;   hosts allow = 192.168.1. 192.168.2. 127.
   unix charset = koi8-r
   dos charset = cp866
консоль в koi8-r всё отлично работает, никаких проблем с кодировкой нет
Я и говорю...нет...это идиальный вариант...и в винде все ок, и в консоле...
но как тока

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

find $folder -type f -print0  | xargs -0 tar rvf $file > /dev/null
начинаются проблемы

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 9:04:52

zg писал(а):
ASD писал(а):он вроде как смотрит на локаль для компановки
гм... он смотрит в настройки консоли, локаль влияет только на сообщения. Если имя файла было в KOI8-R, то и в архиве оно будет в KOI8-R. Тар кодирует имя как есть, 7z и rar переводят в юникод, правда криво.
Не знаю....создан файл из под виндового клиента в локале KOI8-R, архив на выходе кривой...ставлю локаль CP1251, архив правильный...все для того же файла...и где то я читал что tar смотрит на локаль...

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 9:17:34

zg писал(а):

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

zg# touch "Привет мир\!"
zg# convmv -f KOI8-R -t WINDOWS-1251 Привет\ мир\! --notest
Your Perl version has fleas #37757
mv "./Привет мир!"      "./оПХБЕР ЛХП!"
Ready!
zg# tar cvf hello.tar оПХБЕР\ ЛХП\!
a оПХБЕР ЛХП!
zg#
hello.tar
эт понятно...но как это в одной строкой:

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

find $curdayfolder -type f -print0 | iconv -f KOI8-R -t CP1251 |xargs -0 tar rvf $tarfile > /dev/null
не работает...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: кодировка файла

Непрочитанное сообщение zg » 2009-01-28 9:18:01

ASD писал(а):архив на выходе кривой
всё правильно, потому что имена файлов идут в KOI8-R, чтобы архив был на выходе прямым имена файлов нужно переводить в cp1251. Но чтобы с файлами нормально работать из консоли, они должны обзываться в KOI8-R. Как конвертить имена файлов я показал выше.
ASD писал(а):и где то я читал что tar смотрит на локаль
он смотрит на файловую систему, когда обзывает файлы

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

ENVIRONMENT
     The following environment variables affect the execution of tar:

     LANG       The locale to use.  See environ(7) for more information.

     TAPE       The default tape device.  The -f option overrides this.

     TZ         The timezone to use when displaying dates.  See environ(7) for
                more information.
для чего он использует LANG я так и не выяснил, но не для перекодировки имён файлов точно

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: кодировка файла

Непрочитанное сообщение zg » 2009-01-28 9:19:09

ASD писал(а):эт понятно...но как это в одной строкой:
чего именно ты хочешь добиться?

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 9:24:08

zg писал(а):
ASD писал(а):эт понятно...но как это в одной строкой:
чего именно ты хочешь добиться?
каждую ночь запускается грубо коворя скриптик, смотрит в папку "текущего дня", заварахиваих таром и бросает в папку архива, пользователи тоже имеют доступ к папке архивов, но когда они открывают архив...то сами понимаете видят не то что хотят...

сейчас это делается так...

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

find $folder -type f -print0  | xargs -0 tar rvf $file > /dev/null

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: кодировка файла

Непрочитанное сообщение zg » 2009-01-28 9:32:20

$folder в ней шара самбы? или системная папка, которая от самбы не зависит?

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 9:37:09

zg писал(а):$folder в ней шара самбы? или системная папка, которая от самбы не зависит?
это шара, куда вин.пользователи пишут

попробывал так....

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

find $folder -type f -print0 | iconv -f KOI8-R -t CP1251 |xargs -0 tar rvf $tarfile > /dev/null
не получается...

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

FS# /fs/system/scripts/every_day_spec_CURDAY.sh
tar: Removing leading '/' from member names
a fs/GB/CURDAY/every_day_spec_CURDAY.sh
a fs/GB/CURDAY/smb.conf
a fs/GB/CURDAY/locale.config
a fs/GB/CURDAY/testparm
tar: /fs/GB/CURDAY/мНБЮЪ ОЮОЙЮ/рЕЙЯРНБШИ ДНЙСЛЕМР.txt: Cannot stat: No such file or directory
a fs/GB/CURDAY/hello.tar
tar: Error exit delayed from previous errors.
FS#


zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: кодировка файла

Непрочитанное сообщение zg » 2009-01-28 10:34:57

ASD писал(а):это шара, куда вин.пользователи пишут
тогда, думаю, на консоль можно забить и поставить cp1251 для unix charset. Если из консоли надо будет чё-то делать, то можно будет воспользоваться convmv.
ASD писал(а):попробывал так....
так не получится -))) только через convmv

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 10:46:26

я так понимаю у меня таже проблема...
http://forum.lissyara.su/viewtopic.php? ... onv#p64740
блин но такого не может...

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 10:49:09

zg писал(а):
ASD писал(а):это шара, куда вин.пользователи пишут
тогда, думаю, на консоль можно забить и поставить cp1251 для unix charset. Если из консоли надо будет чё-то делать, то можно будет воспользоваться convmv.
жаль....
zg писал(а):
ASD писал(а):попробывал так....
так не получится -))) только через convmv
можно пример....честно скажу...задолбался за 2 дня...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: кодировка файла

Непрочитанное сообщение zg » 2009-01-28 11:06:38

ASD писал(а):можно пример....честно скажу...задолбался за 2 дня...
выше выкладывал -))) но в общем случае так

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

convmv -r -f KOI8-R -t CP1251 /path/to/folder
если всё устраивает, то юзаешь ключик --notest

ASD
мл. сержант
Сообщения: 112
Зарегистрирован: 2008-12-25 20:19:54

Re: кодировка файла

Непрочитанное сообщение ASD » 2009-01-28 16:26:33

zg писал(а):
ASD писал(а):можно пример....честно скажу...задолбался за 2 дня...
выше выкладывал -))) но в общем случае так

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

convmv -r -f KOI8-R -t CP1251 /path/to/folder
если всё устраивает, то юзаешь ключик --notest

Спасибо