К сожалению, нет (практически). Нет способа узнать, является ли данный хэш идентификатором коммита Git, и если да, то где он находится - на GitHub, в локальном git-репозитории или на любом из гигантского количества других сайтов-хостингов git-репозиториев.
Я нашел эту ветку обсуждения с автором p7zip
, Игорем Павловым, на странице p7zip: Проблемы с OEM-кодировкой в Linux . Это близнец вопросов и ответов. В этом посте все сказано.
Вероятно, ключ -mcp не работает в p7zip. Но -mcp работает с 7-zip (версия для Windows). Так что теперь я не знаю, как заставить его работать с p7zip. функция: Rusting MultiByteToUnicodeString (const AString & srcString, UINT codePage) в CPP \ Common \ StringConvert.cpp
Он датирован 18 апреля 2016 года. Я проверил последнюю версию p7zip за июль, но переключатель все еще отсутствует. По крайней мере, в документации, поскольку я не тестировал.
В зависимости от кодировки, используемой для создания ZIP-файла, можно предотвратить нежелательные переводы, временно установив языковой стандарт на «C»:
LC_ALL=C 7z x $archive
(Это помогло для zip-файла, созданного IZArc на Win7, используя два примера имен файлов.)
Однако для архива в вопросе поле «имя_файла» содержит CP1251 в кодировке «ДКП.doc» (84 8a 8f 2e 64 6f 63
). Поле "extra" использует расширение Info-zip (см. раздел 4.6.9 Zip Specification v6.3.4) для хранения имени файла UTF-8. unzip
знает об этом заголовке и использует имя UTF-8, игнорируя имя CP1251.
7z
ничего не делает с этим «дополнительным полем» и использует только CP1251. В зависимости от текущего языкового региона он может создать файл, используя именно это имя (необработанные байты 84 8a 8f
), или, что еще хуже, рассматривать их как точки Юникода, которые сначала должны быть расширены до UTF-8 (c2 84 c2 8a c2 8f
).
Одним из вариантов является использование внешних утилит для изменения zip
первым:
#!/bin/bash
cp orig.zip renamed.zip
index=0
zipinfo -1 orig.zip | while read name ; do
ziptool renamed.zip rename $index "$name"
index=$((index+1))
done
ziptool
is из libzip. zipinfo
распространяется с Info-ZIP UnZip, поэтому вы могли бы просто использовать unzip
.
Проверено P7ZIP 16.02 [64 -бит] (Xubuntu/Ubuntu 18.04.2 LTS)
Кириллические символы остаются проблемой: