Здравствуйте, господа гентушники!
Долгое время я пытался не обращать внимание на проблему кодировки имен файлов в zip архивах, но больше не могу.
При открытии zip архива, содержащего имена файлов на русском, в итоге получается имя этого файла в кракозябрах.
Самый простой вариант был поставить app-arch/unzip из оверлея rusxmms, но он почему-то не заработал (Program received signal SIGABRT, Aborted.).
Кто как решает эту проблему?
app-arch/unzip и русский в именах файлов (кто как борется?)
Модератор: /dev/random
-
proDOOMman
- Сообщения: 284
app-arch/unzip и русский в именах файлов
Ubuntu LL x86 on Acer Extensa 5635G
-
NekoExMachina
- Сообщения: 485
- ОС: Кошерная.
Re: app-arch/unzip и русский в именах файлов
как костыль можно использовать convmv.
но это именно костыль, а не решение проблемы.
но это именно костыль, а не решение проблемы.
На форуме больше не появляюсь.
Высокопарность и надменность довела.
Высокопарность и надменность довела.
OpenBSD-current+scrotwm*1 (acer aspire one 531h)
FreeBSD 8.1+kde3*1 (desktop)
FreeBSD 8.1+scrotwm*1 (hp530)
FreeBSD 9.0+dwm*1 (old toshiba satellite)
FreeBSD 8.1+kde3*1 (desktop)
FreeBSD 8.1+scrotwm*1 (hp530)
FreeBSD 9.0+dwm*1 (old toshiba satellite)
-
rm_
- Сообщения: 3340
- Статус: It's the GNU Age
- ОС: Debian
Re: app-arch/unzip и русский в именах файлов
но это именно костыль, а не решение проблемы.
Я бы не был столь категоричен, учитывая что в формате ZIP вообще не прописывается, в какой кодировке в нём хранятся имена файлов, и при этом храниться они могут - в любой.
-
proDOOMman
- Сообщения: 284
Re: app-arch/unzip и русский в именах файлов
Ну теоретически можно же приделать автоматическое определение кодировки через что-то типа enca. Да и чаще всего встречаются архивы с досовской кодировкой 866.
Решение с convmv в принципе устраивает (за неимением ничего лучшего), хотя да, костыль. Со временем наверно надо будет покопаться в unzip от rusxmms, может найду в чем проблема.
Ubuntu LL x86 on Acer Extensa 5635G
-
sspphheerraa
- Сообщения: 1375
- ОС: Gentoo
Re: app-arch/unzip и русский в именах файлов
- писать на инглише
на худой конец wine+7zip
на худой конец wine+7zip
Sspphheerraa
-
proDOOMman
- Сообщения: 284
Re: app-arch/unzip и русский в именах файлов
...вем людям, от которых я получаю архивы? Оригинально, ничего не скажешь
Ubuntu LL x86 on Acer Extensa 5635G
-
/dev/random
- Администратор
- Сообщения: 5502
- ОС: Gentoo
Re: app-arch/unzip и русский в именах файлов
Раньше ни разу не приходилось сталкиваться с этой проблемой, но сейчас проверил - она действительно существует.
Потратил часок, написал патч, исправляющий эту проблему. Кстати, именно так нужно поступать в подобных случаях, а не жаловаться на форуме.
Использование:
Если НЕ объявлена переменная окружения ZIPCHARSET, либо её значение не является корректным именем кодировки, то пропатченная версия ведёт себя аналогично непропатченной.
Если же в этой переменной находится корректное имя кодировки, то она используется в качестве кодировки архива, а системная кодировка определяется из переменной LANG.
(нужно прописать в .bashrc: export ZIPCHARSET=cp866)
Багрепорты приветствуются.
Добавлено: Прикрепляю в виде оверлея:
Потратил часок, написал патч, исправляющий эту проблему. Кстати, именно так нужно поступать в подобных случаях, а не жаловаться на форуме.
Использование:
Если НЕ объявлена переменная окружения ZIPCHARSET, либо её значение не является корректным именем кодировки, то пропатченная версия ведёт себя аналогично непропатченной.
Если же в этой переменной находится корректное имя кодировки, то она используется в качестве кодировки архива, а системная кодировка определяется из переменной LANG.
(нужно прописать в .bashrc: export ZIPCHARSET=cp866)
Багрепорты приветствуются.
Добавлено: Прикрепляю в виде оверлея:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
proDOOMman
- Сообщения: 284
Re: app-arch/unzip и русский в именах файлов
Спасибо за патч!
Хотя я думал, что существует готовое решение моей проблемы, поэтому и открыл тему.
Хотя я думал, что существует готовое решение моей проблемы, поэтому и открыл тему.
Ubuntu LL x86 on Acer Extensa 5635G
-
izen.fire
- Сообщения: 268
- ОС: Windows XP
Re: app-arch/unzip и русский в именах файлов
Вот ещё один патч patch-ebcdic.h (из порта FreeBSD ports/russian/unzip):
Код: Выделить всё
--- ebcdic.h.orig Wed May 4 12:30:10 2005
+++ ebcdic.h Wed May 4 12:30:18 2005
@@ -237,43 +237,43 @@
#ifdef IZ_ISO2OEM_ARRAY
ZCONST uch Far iso2oem[] = {
- 0x3F, 0x3F, 0x27, 0x9F, 0x22, 0x2E, 0xC5, 0xCE, /* 80 - 87 */
- 0x5E, 0x25, 0x53, 0x3C, 0x4F, 0x3F, 0x3F, 0x3F, /* 88 - 8F */
- 0x3F, 0x27, 0x27, 0x22, 0x22, 0x07, 0x2D, 0x2D, /* 90 - 97 */
- 0x7E, 0x54, 0x73, 0x3E, 0x6F, 0x3F, 0x3F, 0x59, /* 98 - 9F */
- 0xFF, 0xAD, 0xBD, 0x9C, 0xCF, 0xBE, 0xDD, 0xF5, /* A0 - A7 */
- 0xF9, 0xB8, 0xA6, 0xAE, 0xAA, 0xF0, 0xA9, 0xEE, /* A8 - AF */
- 0xF8, 0xF1, 0xFD, 0xFC, 0xEF, 0xE6, 0xF4, 0xFA, /* B0 - B7 */
- 0xF7, 0xFB, 0xA7, 0xAF, 0xAC, 0xAB, 0xF3, 0xA8, /* B8 - BF */
- 0xB7, 0xB5, 0xB6, 0xC7, 0x8E, 0x8F, 0x92, 0x80, /* C0 - C7 */
- 0xD4, 0x90, 0xD2, 0xD3, 0xDE, 0xD6, 0xD7, 0xD8, /* C8 - CF */
- 0xD1, 0xA5, 0xE3, 0xE0, 0xE2, 0xE5, 0x99, 0x9E, /* D0 - D7 */
- 0x9D, 0xEB, 0xE9, 0xEA, 0x9A, 0xED, 0xE8, 0xE1, /* D8 - DF */
- 0x85, 0xA0, 0x83, 0xC6, 0x84, 0x86, 0x91, 0x87, /* E0 - E7 */
- 0x8A, 0x82, 0x88, 0x89, 0x8D, 0xA1, 0x8C, 0x8B, /* E8 - EF */
- 0xD0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* F0 - F7 */
- 0x9B, 0x97, 0xA3, 0x96, 0x81, 0xEC, 0xE7, 0x98 /* F8 - FF */
+ 0xC4, 0xB3, 0xDA, 0xBF, 0xC0, 0xD9, 0xC3, 0xB4, /* 80 - 87 */
+ 0xC2, 0xC1, 0xC5, 0xDF, 0xDC, 0xDB, 0xDD, 0xDE, /* 88 - 8F */
+ 0xB0, 0xB1, 0xB2, 0x40, 0xFE, 0xF9, 0xFB, 0x40, /* 90 - 97 */
+ 0x66, 0x02, 0xFF, 0x0D, 0xF8, 0x02, 0xFA, 0x0D, /* 98 - 9F */
+ 0xCD, 0xBA, 0xD5, 0xF1, 0xD6, 0xC9, 0xB8, 0xB7, /* A0 - A7 */
+ 0xBB, 0xD4, 0xD3, 0xC8, 0xBE, 0xBD, 0xBC, 0xC6, /* A8 - AF */
+ 0xC7, 0xCC, 0xB5, 0xF0, 0xB6, 0xB9, 0xD1, 0xD2, /* B0 - B7 */
+ 0xCB, 0xCF, 0xD0, 0xCA, 0xD8, 0xD7, 0xCE, 0xBF, /* B8 - BF */
+ 0xEE, 0xA0, 0xA1, 0xE6, 0xA4, 0xA5, 0xE4, 0xA3, /* C0 - C7 */
+ 0xE5, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, /* C8 - CF */
+ 0xAF, 0xEF, 0xE0, 0xE1, 0xE2, 0xE3, 0xA6, 0xA2, /* D0 - D7 */
+ 0xEC, 0xEB, 0xA7, 0xE8, 0xED, 0xE9, 0xE7, 0xEA, /* D8 - DF */
+ 0x9E, 0x80, 0x81, 0x96, 0x84, 0x85, 0x94, 0x83, /* E0 - E7 */
+ 0x95, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, /* E8 - EF */
+ 0x8F, 0x9F, 0x90, 0x91, 0x92, 0x93, 0x86, 0x82, /* F0 - F7 */
+ 0x9C, 0x9B, 0x87, 0x98, 0x9D, 0x99, 0x97, 0x9A, /* F8 - FF */
};
#endif /* IZ_ISO2OEM_ARRAY */
#ifdef IZ_OEM2ISO_ARRAY
ZCONST uch Far oem2iso[] = {
- 0xC7, 0xFC, 0xE9, 0xE2, 0xE4, 0xE0, 0xE5, 0xE7, /* 80 - 87 */
- 0xEA, 0xEB, 0xE8, 0xEF, 0xEE, 0xEC, 0xC4, 0xC5, /* 88 - 8F */
- 0xC9, 0xE6, 0xC6, 0xF4, 0xF6, 0xF2, 0xFB, 0xF9, /* 90 - 97 */
- 0xFF, 0xD6, 0xDC, 0xF8, 0xA3, 0xD8, 0xD7, 0x83, /* 98 - 9F */
- 0xE1, 0xED, 0xF3, 0xFA, 0xF1, 0xD1, 0xAA, 0xBA, /* A0 - A7 */
- 0xBF, 0xAE, 0xAC, 0xBD, 0xBC, 0xA1, 0xAB, 0xBB, /* A8 - AF */
- 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xC1, 0xC2, 0xC0, /* B0 - B7 */
- 0xA9, 0xA6, 0xA6, 0x2B, 0x2B, 0xA2, 0xA5, 0x2B, /* B8 - BF */
- 0x2B, 0x2D, 0x2D, 0x2B, 0x2D, 0x2B, 0xE3, 0xC3, /* C0 - C7 */
- 0x2B, 0x2B, 0x2D, 0x2D, 0xA6, 0x2D, 0x2B, 0xA4, /* C8 - CF */
- 0xF0, 0xD0, 0xCA, 0xCB, 0xC8, 0x69, 0xCD, 0xCE, /* D0 - D7 */
- 0xCF, 0x2B, 0x2B, 0xA6, 0x5F, 0xA6, 0xCC, 0xAF, /* D8 - DF */
- 0xD3, 0xDF, 0xD4, 0xD2, 0xF5, 0xD5, 0xB5, 0xFE, /* E0 - E7 */
- 0xDE, 0xDA, 0xDB, 0xD9, 0xFD, 0xDD, 0xAF, 0xB4, /* E8 - EF */
- 0xAD, 0xB1, 0x3D, 0xBE, 0xB6, 0xA7, 0xF7, 0xB8, /* F0 - F7 */
- 0xB0, 0xA8, 0xB7, 0xB9, 0xB3, 0xB2, 0xA6, 0xA0 /* F8 - FF */
+ 0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA, /* 80 - 87 */
+ 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, /* 88 - 8F */
+ 0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE, /* 90 - 97 */
+ 0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1, /* 98 - 9F */
+ 0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA, /* A0 - A7 */
+ 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, /* A8 - AF */
+ 0x90, 0x91, 0x92, 0x81, 0x87, 0xB2, 0xB4, 0xA7, /* B0 - B7 */
+ 0xA6, 0xB5, 0xA1, 0xA8, 0xAE, 0xAD, 0xAC, 0x83, /* B8 - BF */
+ 0x84, 0x89, 0x88, 0x86, 0x80, 0x8A, 0xAF, 0xB0, /* C0 - C7 */
+ 0xAB, 0xA5, 0xBB, 0xB8, 0xB1, 0xA0, 0xBE, 0xB9, /* C8 - CF */
+ 0xBA, 0xB6, 0xB7, 0xAA, 0xA9, 0xA2, 0xA4, 0xBD, /* D0 - D7 */
+ 0xBC, 0x85, 0x82, 0x8D, 0x8C, 0x8E, 0x8F, 0x8B, /* D8 - DF */
+ 0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE, /* E0 - E7 */
+ 0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1, /* E8 - EF */
+ 0xB3, 0xA3, 0x90, 0x91, 0x92, 0x93, 0x86, 0x82, /* F0 - F7 */
+ 0x9C, 0x95, 0x9E, 0x96, 0x9D, 0x99, 0x94, 0x9A, /* F8 - FF */
};
#endif /* IZ_OEM2ISO_ARRAY */Ротор поля наподобие дивергенции градуирует себя вдоль спина и там внутре ево неонка.