Кодировка внутри архива 7z (rar, zip, arj)
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2009-05-06 14:53:25
- Откуда: Волгоград
- Контактная информация:
Кодировка внутри архива 7z (rar, zip, arj)
Под FreeBSD создаётся файловый архив, который затем должны иметь возможность просматривать виндовс пользователи. Есть много кириллических имён файлов. Локаль - CP1251, имена файлов в файловой системе - тоже CP1251. Всё замечательно работает, если архивировать tar'ом: русские имена файлов корректно отображаются когда архив открывается под Windows (например, 7zip'ом). По некоторым причинам tar не слишком удобен (например, файл Архив_Проекты.tar.gz — большой, и просматривать его содержимое можно только распаковав - ведь файл .tar вложен в архив gzip).
В чём, собственно, вопрос:
Если использовать любой другой архиватор из портов (rar, p7zip, arj, zip ...) имена файлов в архиве для виндовс пользователя превращаются в "кракозябры". Как такое получается, и можно ли это побороть?
В чём, собственно, вопрос:
Если использовать любой другой архиватор из портов (rar, p7zip, arj, zip ...) имена файлов в архиве для виндовс пользователя превращаются в "кракозябры". Как такое получается, и можно ли это побороть?
Последний раз редактировалось CyberSniff 2009-05-06 15:38:35, всего редактировалось 1 раз.
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Кодировка внутри архива 7z (rar, zip, arj)
честно говоря никогда с этим проблем не было....CyberSniff писал(а):ведь файл .tar вложен в архив gzip
тема уже где-то поднималась, вроде про самбуCyberSniff писал(а):Как такое получается, и можно ли это побороть?
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2009-05-06 14:53:25
- Откуда: Волгоград
- Контактная информация:
Re: Кодировка внутри архива 7z (rar, zip, arj)
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:55:12, всего редактировалось 1 раз.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Кодировка внутри архива 7z (rar, zip, arj)
эм... читать то не?CyberSniff писал(а):Самба здесь ни при чём — файл создаётся внутри фряхи
с cp1251 проблем не будет.CyberSniff писал(а):Поэтому — 7z хочу использовать.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2009-05-06 14:53:25
- Откуда: Волгоград
- Контактная информация:
Re: Кодировка внутри архива 7z (rar, zip, arj)
Да, никаких пробем, кроме кодировки файлов. В первом сообщении написал:zg писал(а):с cp1251 проблем не будет.
"Локаль - CP1251, имена файлов в файловой системе - тоже CP1251. .... Если использовать любой другой архиватор из портов (rar, p7zip, arj, zip ...) имена файлов в архиве для виндовс пользователя превращаются в "кракозябры".
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Кодировка внутри архива 7z (rar, zip, arj)
виндовые архивы должны содержать CP866CyberSniff писал(а):имена файлов в архиве для виндовс пользователя превращаются в "кракозябры".
Код: Выделить всё
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#
- iZEN
- ст. лейтенант
- Сообщения: 1095
- Зарегистрирован: 2007-09-15 16:45:26
- Контактная информация:
Re: Кодировка внутри архива 7z (rar, zip, arj)
Заметил. Если использовать менеджер архивов 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-архивах.
В другую сторону: архивация в Windows и перенос архива на FreeBSD — корректно всё сделать может только 7Zip. Не знаю, может он сохраняет имена сжатых файлов внутри обычных ZIP-архивов в Unicode и ему по барабану целевая система? Похоже на то — File-Roller показывает нормальные имена файлов в сделанных 7Zip zip-архивах.
GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: Кодировка внутри архива 7z (rar, zip, arj)
7zip хранит усё в полноценном UCS-16
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Кодировка внутри архива 7z (rar, zip, arj)
чё-то не заметил энтузиазма...hizel писал(а):7zip хранит усё в полноценном UCS-16
Код: Выделить всё
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#
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Кодировка внутри архива 7z (rar, zip, arj)
а так читается архив, созданный под виндой, на фре где тут хвалёный юникод
Код: Выделить всё
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#
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: Кодировка внутри архива 7z (rar, zip, arj)
у мя всё было пучком
нет винды проверить
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2009-05-06 14:53:25
- Откуда: Волгоград
- Контактная информация:
Re: Кодировка внутри архива 7z (rar, zip, arj)
Точно. Спасибо CP866 — оружие победы. Правда, 7z не поддался, зато zip и rar сделали архивчики с читаемыми под Windows именами.zg писал(а):виндовые архивы должны содержать CP866
Перекодировать файловую систему в CP866 неохота. Сделал пока так: нужные файлы сейчас шарятся через самбу, подмонтировал шару с помощью mount_smbfs, получился "виртуальный диск" — как раз в CP866. Может можно было сделать не так извращённо, не знаю.
-
- проходил мимо
- Сообщения: 2
- Зарегистрирован: 2009-07-07 17:38:26
Re: Кодировка внутри архива 7z (rar, zip, arj)
Для распаковки архивов под Linux (в моём случае под Ubuntu 9.04) помогла опция -O
Из хелпа:
А вот запаковать в ZIP не получается, чтобы там была DOS (cp866) кодировка.
Пробовал вручную задавать LANG, в результате в зависимости от кодировки кракозябры в zip-файле под Windows разные, но рабочего варианта подобрать не удалось.
Пробовал так:
Под windows проверял через 7zip. Через стандартный в windows XP просмотр ZIP - во всех случаях имя файла "TВ¦¦TБTВ¦-¦-TЛ¦¦_TД¦-¦¦¦¬.txt"
Вариант с монтированием шары через samba не подходит, т.к. нужно сделать чтобы нормально архивировались любые файлы в любой папке в пару кликов.
Может у кого-нибудь получилось что-нибудь изобрести для решения этой проблемы?
Из хелпа:
Код: Выделить всё
-O CHARSET specify a character encoding for DOS, Windows and OS/2 archives
-I CHARSET specify a character encoding for UNIX and other archives
Пробовал вручную задавать 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
Вариант с монтированием шары через samba не подходит, т.к. нужно сделать чтобы нормально архивировались любые файлы в любой папке в пару кликов.
Может у кого-нибудь получилось что-нибудь изобрести для решения этой проблемы?
-
- проходил мимо
Re: Кодировка внутри архива 7z (rar, zip, arj)
Rar 3.80 установившийся из портов FreeBSD не помог (нужно было из каталога самбы упаковывать файлы с русскими именами) winrar отображал крякозяблы, но гдето нашел совет установить ручками более старую версию rarlinux-3.6.0.tar.gz и, о чудо, все по пошло. Ссылку уже потерял но по имени файла думаю его можно будет найти. В скрипте потребовалось добавить:
/usr/local/bin/rar a ... и т.д.
Код: Выделить всё
#!/bin/sh
LANG=ru_RU.KOI8-R; export LANG;
MM_CHARSET=KOI8-R; export MM_CHARSET;