<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%BC%D0%B5%D0%BD_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%B2_%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%B0%D1%85_zip</id>
	<title>Кодировка имен файлов в архивах zip - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%BC%D0%B5%D0%BD_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%B2_%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%B0%D1%85_zip"/>
	<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%BC%D0%B5%D0%BD_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%B2_%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%B0%D1%85_zip&amp;action=history"/>
	<updated>2026-10-12T23:47:49Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%BC%D0%B5%D0%BD_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%B2_%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%B0%D1%85_zip&amp;diff=305&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%BC%D0%B5%D0%BD_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%B2_%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%B0%D1%85_zip&amp;diff=305&amp;oldid=prev"/>
		<updated>2023-02-27T18:39:17Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 21:39, 27 февраля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%BC%D0%B5%D0%BD_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%B2_%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%B0%D1%85_zip&amp;diff=304&amp;oldid=prev</id>
		<title>178.162.53.3 в 12:04, 12 октября 2020</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=%D0%9A%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%BC%D0%B5%D0%BD_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%B2_%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%B0%D1%85_zip&amp;diff=304&amp;oldid=prev"/>
		<updated>2020-10-12T12:04:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Довольно часто при открытии под Линуксом архивов, содержащих файлы и директории с кириллическими (и вообще любыми не-ASCII) названиями, обнаруживается, что имена файлов в них в неправильной кодировке. Если такой архив распаковать на диск, файлы на диске могут получиться с нечитаемыми названиями.&lt;br /&gt;
&lt;br /&gt;
Происходит это потому, что в разных файловых системах имена файлов хранятся в разных кодировках, да ещё операционные системы работают с ними по-разному, а большинство архивных форматов не предусматривает указания кодировки: какая была при упаковке, такая и будет. Проще говоря, по историческим причинам в кодировках имён файлов в архивах царит кавардак.&lt;br /&gt;
&lt;br /&gt;
Проблема чаще всего возникает с файлами формата ZIP, упакованными под Windows (вообще говоря, существует [https://www.opennet.ru/openforum/vsluhforumID3/72961.html#58 алгоритм] правильного определения кодировок для таких архивов, но он мало где поддерживается). Собственно, форматы TAR, GZIP, BZIP2 и многие другие тоже этому подвержены, но они чаще всего создаются под Линуксом или на других POSIX-совместимых платформах, а там сейчас почти всегда одна и та же кодировка — UTF-8, поэтому проблема не проявляется.&lt;br /&gt;
&lt;br /&gt;
'''Эта проблема касается исключительно имён файлов и директорий. Содержимого файлов это никак не касается.''' Естественно, если в архиве есть текстовый файл в неизвестной кодировке, вам придётся её подбирать в текстовом редакторе, но это уже совсем другая история.&lt;br /&gt;
&lt;br /&gt;
Если надо распаковать такой архив, то решение очень простое: надо указать архиватору, в какой кодировке там имена файлов. Проблема в том, что распространённые архиваторы с графическим интерфейсом такой опции не имеют, программы для командной строки обычно тоже (в лучшем случае она глубоко спрятана в документации). Поэтому приводим советы, как именно нужно поступать.&lt;br /&gt;
&lt;br /&gt;
Что касается самой кодировки, то стоит ожидать либо UTF-8, либо CP866, либо (редко) CP1251.&lt;br /&gt;
&lt;br /&gt;
= Разархиваторы, которые просто работают =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/elfmz/far2l far2l] (linux порт Far Manager) выбирает кодировку не-юникодных архивов по системной локали — &amp;quot;сжатые папки&amp;quot; в Windows ведут себя точно также. [https://launchpad.net/~far2l-team/+archive/ubuntu/ppa ppa]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.theunarchiver.com/command-line The Unarchiver] (в дистрибутивах - пакеты unar, unarchiver) умеет угадывать кодировку статистическими методами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unar file.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bsdtar (из состава libarchive) умеет распаковывать zip-файлы и преобразует кодировку имен на лету&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bsdtar --option hdrcharset=cp866 -xf file.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Рецепт для Ubuntu =&lt;br /&gt;
&lt;br /&gt;
Добавляем репозиторий с исправленной версией архиваторов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo add-apt-repository ppa:frol/zip-i18n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обновляем репозитории и пакеты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее устанавливаем следующие пакеты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install p7zip p7zip-full&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Теперь названия файлов в архивах будут отображаться в правильной кодировке.&lt;br /&gt;
&lt;br /&gt;
= Рецепт для Gentoo =&lt;br /&gt;
&lt;br /&gt;
После пересборки zip и unzip с USE-флагом natspec всё работает само собой. В любительском оверлее [http://rusxmms.sourceforge.net/index.php?page=download.php rusxmms] доступен пакет p7zip с графическим интерфейсом для архиватора 7-Zip, в котором также поправлена кодировка. Для p7zip необходимо включить USE-флах rcc, который используется также в некоторых других пакетах данного оверлея, например id3tag и mpg123.&lt;br /&gt;
&lt;br /&gt;
= Рецепт для Fedora =&lt;br /&gt;
&lt;br /&gt;
Можно позаимствовать патчи unzip и libnatspec у проекта RussianFedora:&lt;br /&gt;
&lt;br /&gt;
[http://mirror.yandex.ru/fedora/russianfedora/russianfedora/free/fedora/releases/14/Everything/source/SRPMS/libnatspec-0.2.6-1.fc14.src.rpm libnatspec ]&lt;br /&gt;
&lt;br /&gt;
[http://mirror.yandex.ru/fedora/russianfedora/russianfedora/fixes/fedora/releases/14/Everything/source/SRPMS/unzip-6.0-3.fc14.1.src.rpm unzip ]&lt;br /&gt;
= Рецепт для Archlinux =&lt;br /&gt;
&lt;br /&gt;
Установите пакет [https://aur.archlinux.org/packages/unzip-iconv/ unzip-iconv] с AUR:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;yaourt -S unzip-iconv&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Рецепт для openSUSE =&lt;br /&gt;
&amp;lt;pre&amp;gt;#zypper in unzip-rcc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Универсальные решения =&lt;br /&gt;
&lt;br /&gt;
Актуальны для любого дистрибутива&lt;br /&gt;
&lt;br /&gt;
== Для терминала ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls | iconv -f Latin1 -t cp850 | iconv -f cp866&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip file.zip -d directory-name&lt;br /&gt;
cd directory-name&lt;br /&gt;
convmv -f cp866 -t utf8 *&lt;br /&gt;
# удостоверяемся, что всё в порядке&lt;br /&gt;
convmv --notest -f cp866 -t utf8 *&lt;br /&gt;
# вместо cp866 может понадобиться cp1251 или даже koi8-r&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Для Gnome 2 ==&lt;br /&gt;
&lt;br /&gt;
# Ставим fuse-zip&lt;br /&gt;
&lt;br /&gt;
# Создаём директорию ~/.ZIP&lt;br /&gt;
&lt;br /&gt;
# Пишем скрипт:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#! /bin/bash&lt;br /&gt;
fusermount -u ~/.ZIP&lt;br /&gt;
fuse-zip &amp;quot;$1&amp;quot; .ZIP -omodules=iconv,from_code=CP866,to_code=UTF8&lt;br /&gt;
nautilus ~/.ZIP&lt;br /&gt;
xrefresh -white&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Делаем исполняемым и помещаем например если стоит gnome в ~/.gnome2/nautilus-scripts&lt;br /&gt;
&lt;br /&gt;
# Назначаем открывать ZIP-архивы с помощью этого скрипта&lt;br /&gt;
&lt;br /&gt;
[[Category:Полезные советы]]&lt;br /&gt;
&lt;br /&gt;
= Как самому упаковывать файлы, чтобы не было проблем =&lt;br /&gt;
Проблем не будет, если все имена файлов и директорий в архиве состоят исключительно из латинских букв, цифр, пробелов и базовой пунктуации, кроме слэша (/) — слэш в именах файлов под Линуксом недопустим. Если архив будут открывать под Windows, там запрещённых символов больше: '''&amp;lt;''', '''&amp;gt;''', ''':''', '''&amp;quot;''', '''/''', '''\''', '''|''', '''?''' и '''*''' [http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29]. Но их и под Линуксом не рекомендуется использовать в именах файлов, потому что в командной строке все эти символы имеют специальное значение.&lt;br /&gt;
&lt;br /&gt;
А также проблем не будет с форматом '''7z''' (архиватор [http://p7zip.sourceforge.net p7zip] для Линукс/POSIX, [http://www.7-zip.org 7-Zip] для Windows), ни под Линуксом, ни под другими системами: архиватор при упаковке автоматически перекодирует все имена файлов в UTF-8, а при распаковке перекодирует их в кодировку системной локали. Формат полностью свободный и с хорошим сжатием, поэтому им и рекомендуется пользоваться.&lt;br /&gt;
&lt;br /&gt;
Обычно не бывает проблем и с популярным форматом RAR, так как там имена файлов кодируются всегда в UTF-16. Но, во-первых, он проприетарный: свободные архиваторы его более-менее поддерживают, но с некоторыми версиями формата не справляются. Во-вторых, поступают сообщения, что некоторые архиваторы для Линукса всё-таки и при работе с RAR запарывают кодировку. Рекомендуется пользоваться 7z.&lt;br /&gt;
&lt;br /&gt;
Стоит отметить, что программа zip от Info-ZIP, использующаяся в большинстве дистрибутивов, с версии 3.0 при создании архивов сохраняет имена файлов одновременно в двух кодировках: в той, какая есть, и в UTF-8. Такой архив можно будет распаковать без проблем, а совместимость со старыми версиями архиваторов при этом не нарушается. Но это никак не помогает при распаковке архивов, созданных другими программами. На самом деле, даже спецификация формата ZIP включает пункт о том, что имена файлов должны кодироваться либо в CP437, либо в UTF-8, но разработчики архиваторов часто игнорируют этот пункт.&lt;/div&gt;</summary>
		<author><name>178.162.53.3</name></author>
	</entry>
</feed>