Кодировка внутри архива 7z (rar, zip, arj)

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

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
CyberSniff
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-05-06 14:53:25
Откуда: Волгоград
Контактная информация:

Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение CyberSniff » 2009-05-06 15:09:01

Под FreeBSD создаётся файловый архив, который затем должны иметь возможность просматривать виндовс пользователи. Есть много кириллических имён файлов. Локаль - CP1251, имена файлов в файловой системе - тоже CP1251. Всё замечательно работает, если архивировать tar'ом: русские имена файлов корректно отображаются когда архив открывается под Windows (например, 7zip'ом). По некоторым причинам tar не слишком удобен (например, файл Архив_Проекты.tar.gz — большой, и просматривать его содержимое можно только распаковав - ведь файл .tar вложен в архив gzip).

В чём, собственно, вопрос:
Если использовать любой другой архиватор из портов (rar, p7zip, arj, zip ...) имена файлов в архиве для виндовс пользователя превращаются в "кракозябры". Как такое получается, и можно ли это побороть?
Последний раз редактировалось CyberSniff 2009-05-06 15:38:35, всего редактировалось 1 раз.

Хостинговая компания 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/

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

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение zg » 2009-05-06 15:21:29

CyberSniff писал(а):ведь файл .tar вложен в архив gzip
честно говоря никогда с этим проблем не было....
CyberSniff писал(а):Как такое получается, и можно ли это побороть?
тема уже где-то поднималась, вроде про самбу

CyberSniff
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-05-06 14:53:25
Откуда: Волгоград
Контактная информация:

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение CyberSniff » 2009-05-06 15:31:00

zg писал(а):
CyberSniff писал(а):ведь файл .tar вложен в архив gzip
честно говоря никогда с этим проблем не было....

Для ясности — человек из под Windows открывает большой файл с архивом, что бы найти в нём нужную ему папку и её разархивировать. Если это обычный архив 7z или rar — гуёвая оболочка 7zip выдаст ему спискок файлов в архиве. Если же это .tar.gz, то она (оболочка) сначала разархивирует вложенный файл .tar. Поэтому — 7z хочу использовать.
zg писал(а):
CyberSniff писал(а):Как такое получается, и можно ли это побороть?
тема уже где-то поднималась, вроде про самбу
Самба здесь ни при чём — файл создаётся внутри фряхи, а самба его лишь передаёт виндовс клиенту. Вряд ли она на лету перекодирует вложенные в архив имена файлов :)

Аватара пользователя
gloom
лейтенант
Сообщения: 738
Зарегистрирован: 2008-03-13 16:29:12
Откуда: UA

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение gloom » 2009-05-06 15:37:48

есть такая проблема
что интересно с раром под линухом такой проблемы нету в винде все коректно)) если нету виндовых спецсимволов вроде " : ? тогда бет имена содержащие их
фряшныйпорт рара не умеет так :(
Последний раз редактировалось gloom 2009-05-06 15:55:12, всего редактировалось 1 раз.

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

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение zg » 2009-05-06 15:41:49

CyberSniff писал(а):Самба здесь ни при чём — файл создаётся внутри фряхи
эм... читать то не?
CyberSniff писал(а):Поэтому — 7z хочу использовать.
с cp1251 проблем не будет.

CyberSniff
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-05-06 14:53:25
Откуда: Волгоград
Контактная информация:

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение CyberSniff » 2009-05-06 16:00:38

zg писал(а):с cp1251 проблем не будет.
Да, никаких пробем, кроме кодировки файлов. В первом сообщении написал:
"Локаль - CP1251, имена файлов в файловой системе - тоже CP1251. .... Если использовать любой другой архиватор из портов (rar, p7zip, arj, zip ...) имена файлов в архиве для виндовс пользователя превращаются в "кракозябры".

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

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение zg » 2009-05-06 16:18:33

CyberSniff писал(а):имена файлов в архиве для виндовс пользователя превращаются в "кракозябры".
виндовые архивы должны содержать CP866

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

zg# convmv -r -f KOI8-R -t CP866 Привет_мир.txt
Your Perl version has fleas #37757
Starting a dry run without changes...
mv "./Привет_мир.txt"   "./?Ю???Б_??Ю.txt"
No changes to your files done. Use --notest to finally rename the files.
zg# mv "./Привет_мир.txt"   "./?Ю???Б_??Ю.txt"
zg# rm 1.zip
zg# zip 1.zip "./?Ю???Б_??Ю.txt"
  adding: ?Ю???Б_??Ю.txt (stored 0%)
zg#
1.zip
(178 байт) 165 скачиваний

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1089
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение iZEN » 2009-05-06 19:59:13

Заметил. Если использовать менеджер архивов 7Zip на WindowsXP, то ZIP-архивы, сжатые в FreeBSD (ru_RU.UTF-8), например, менеджером File-Roller'ом и потом принесённые на Windows (CP-1251), нормально распаковываются и читаются менеджером 7Zip. А вот WinRAR, IZarc, PowerArchiver и другие не могут распаковать такой архив — вместо имён файлов крякозябры.

В другую сторону: архивация в Windows и перенос архива на FreeBSD — корректно всё сделать может только 7Zip. Не знаю, может он сохраняет имена сжатых файлов внутри обычных ZIP-архивов в Unicode и ему по барабану целевая система? Похоже на то — File-Roller показывает нормальные имена файлов в сделанных 7Zip zip-архивах. :roll:
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

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

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение hizel » 2009-05-06 20:13:22

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

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

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение zg » 2009-05-06 20:19:09

hizel писал(а):7zip хранит усё в полноценном UCS-16 :roll:
чё-то не заметил энтузиазма... :(

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

zg# 7z l 1.7z

7-Zip 4.57  Copyright (c) 1999-2007 Igor Pavlov  2007-12-06
p7zip Version 4.57 (locale=ru_RU.KOI8-R,Utf16=on,HugeFiles=on,1 CPU)

Listing archive: 1.7z

Solid = -
Blocks = 0

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2009-05-06 18:13:18 ....A            0            0  Привет_мир.txt
------------------- ----- ------------ ------------  ------------------------
                                     0            0  1 files, 0 folders
zg#
однако архив в винде не читается.... Сам 7z переводит имена файлов в 1252, рар вообще вешается...
7z.PNG

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

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение zg » 2009-05-06 20:23:33

а так читается архив, созданный под виндой, на фре

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

zg# 7z l 2.7z

7-Zip 4.57  Copyright (c) 1999-2007 Igor Pavlov  2007-12-06
p7zip Version 4.57 (locale=ru_RU.KOI8-R,Utf16=on,HugeFiles=on,1 CPU)

Listing archive: 2.7z

Solid = -
Blocks = 0

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2009-05-06 23:22:10 ....A            0            0  ????????? ????????.txt
------------------- ----- ------------ ------------  ------------------------
                                     0            0  1 files, 0 folders
zg#
где тут хвалёный юникод :unknown:

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

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение hizel » 2009-05-06 20:57:53

:pardon:
у мя всё было пучком
нет винды проверить
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

CyberSniff
проходил мимо
Сообщения: 4
Зарегистрирован: 2009-05-06 14:53:25
Откуда: Волгоград
Контактная информация:

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение CyberSniff » 2009-05-07 9:52:19

zg писал(а):виндовые архивы должны содержать CP866
Точно. Спасибо :good: CP866 — оружие победы. Правда, 7z не поддался, зато zip и rar сделали архивчики с читаемыми под Windows именами.

Перекодировать файловую систему в CP866 неохота. Сделал пока так: нужные файлы сейчас шарятся через самбу, подмонтировал шару с помощью mount_smbfs, получился "виртуальный диск" — как раз в CP866. Может можно было сделать не так извращённо, не знаю.

Murz
проходил мимо
Сообщения: 2
Зарегистрирован: 2009-07-07 17:38:26

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение Murz » 2009-07-07 17:43:34

Для распаковки архивов под Linux (в моём случае под Ubuntu 9.04) помогла опция -O
Из хелпа:

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

  -O CHARSET  specify a character encoding for DOS, Windows and OS/2 archives
  -I CHARSET  specify a character encoding for UNIX and other archives
А вот запаковать в ZIP не получается, чтобы там была DOS (cp866) кодировка.
Пробовал вручную задавать LANG, в результате в зависимости от кодировки кракозябры в zip-файле под Windows разные, но рабочего варианта подобрать не удалось.
Пробовал так:

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

LANG=ru_RU.UTF8 zip test.zip тестовый_файл.txt # получилось имя тестовый_файл.txt
LANG=ru_RU.CP1251 zip test.zip тестовый_файл.txt  # получилось имя тестовый_файл.txt
LANG=ru_RU.KOI8-R zip test.zip тестовый_файл.txt # тестовый_файл.txt
LANG=ru_RU.CP866 zip test.zip тестовый_файл.txt  # тестовый_файл.txt
Под windows проверял через 7zip. Через стандартный в windows XP просмотр ZIP - во всех случаях имя файла "TВ¦¦TБTВ¦-¦-TЛ¦¦_TД¦-¦¦¦¬.txt"
Вариант с монтированием шары через samba не подходит, т.к. нужно сделать чтобы нормально архивировались любые файлы в любой папке в пару кликов.
Может у кого-нибудь получилось что-нибудь изобрести для решения этой проблемы?

sergey_kan
проходил мимо

Re: Кодировка внутри архива 7z (rar, zip, arj)

Непрочитанное сообщение sergey_kan » 2009-07-28 9:11:27

Rar 3.80 установившийся из портов FreeBSD не помог (нужно было из каталога самбы упаковывать файлы с русскими именами) winrar отображал крякозяблы, но гдето нашел совет установить ручками более старую версию rarlinux-3.6.0.tar.gz и, о чудо, все по пошло. Ссылку уже потерял но по имени файла думаю его можно будет найти. В скрипте потребовалось добавить:

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

#!/bin/sh
LANG=ru_RU.KOI8-R; export LANG;
MM_CHARSET=KOI8-R; export MM_CHARSET;
/usr/local/bin/rar a ... и т.д.