Bug 12313 - Ошибка кодировки в именах файлов
: Ошибка кодировки в именах файлов
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/unzip)
: unstable
: all Linux
: P2 blocker
Assigned To:
:
:
:
: 4871
: 12100 12418
  Show dependency tree
 
Reported: 2007-07-12 12:38 by
Modified: 2008-10-08 21:59 (History)


Attachments
Патч, использующий natspec и корректный буфер (13.55 KB, patch)
2007-07-30 12:37, Vitaly Lipatov
no flags Details | Diff
Патч к спеку для сборки с новым патчем natspec (1.30 KB, patch)
2007-07-30 12:39, Vitaly Lipatov
no flags Details | Diff
пример файла (369.49 KB, application/octet-stream)
2007-12-13 12:10, Anton V. Boyarshinov
no flags Details


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2007-07-12 12:38:46
Локаль: utf-8, ALT Linux 4.0 Desktop.

Кириллические имена файлов в zip-архивах показываются квадратиками, 
аргумент -O не работает. Раньше всё работало без проблем.
------- Comment #1 From 2007-07-12 12:43:21 -------
(In reply to comment #0)
>  Раньше всё работало без проблем.
Раньше -- это когда? В Desktop работает? Если нет -- вешайте на Desktop. 
------- Comment #2 From 2007-07-12 12:54:42 -------
Два года назад патч был еще живой, нтересно, когда он отвалился...
Буду копать, но код там бредовый... Жутко бредовый...
------- Comment #3 From 2007-07-12 12:55:55 -------
Раньше - это месяц назад в Сизифе. Сейчас не работает ни в Сизифе, ни в 
Desktop
------- Comment #4 From 2007-07-29 14:12:55 -------
(In reply to comment #3)
> Раньше - это месяц назад в Сизифе. Сейчас не работает ни в Сизифе, ни в 
> Desktop

Это действительно блокер.
Евгений, можно исправить быстро?
------- Comment #5 From 2007-07-30 11:04:00 -------
Да, при LANG=ru_RU.UTF8
выводит в консоль в CP866.
А вот никакого ключа -O  я не нашёл у unzip.
------- Comment #6 From 2007-07-30 11:43:21 -------
[cas@cas ~]$ unzip -v | grep Maint
UnZip 5.52 of 28 February 2005, by Info-ZIP.  Maintained by C. Spieler.  Send
[cas@cas ~]$ unzip -h | grep CHARSET
  -O CHARSET  specify a character encoding for DOS, Windows and OS/2 archives
  -I CHARSET  specify a character encoding for UNIX and other archives
------- Comment #7 From 2007-07-30 12:37:50 -------
Created an attachment (id=2119) [details]
Патч, использующий natspec и корректный буфер

Проблема старого патча была в следующем:
- в нём использовалась таблица из нескольких кодировок, в которой не было UTF8
- в качестве размера буфера использовалась длина исходной строки, что делало
невозможным перекодирование из CP866 в UTF-8 (строка не влезала)
------- Comment #8 From 2007-07-30 12:39:48 -------
Created an attachment (id=2120) [details]
Патч к спеку для сборки с новым патчем natspec

Если нужно, я могу и залить пакет. Было бы отлично, если кто-то ещё проверит.
------- Comment #9 From 2007-07-30 16:13:35 -------
(In reply to comment #8)
> Created an attachment (id=2120) [edit] [details]
> Патч к спеку для сборки с новым патчем natspec
> 
> Если нужно, я могу и залить пакет. Было бы отлично, если кто-то ещё 
проверит.

Твой пакет работает. Из консоли и в file-roller. А вот в Ark имя файла 
обрезается. Тут уж надо KDE патчить.
------- Comment #10 From 2007-07-30 18:11:49 -------
А какой длины обрезаемые имена?
Возможно в unzip стоит увеличить лимит, если там ошибка в условиях, то там 
может быть 255 как предел (соотв. 127 символов)

P.S.
Мне ещё и Ark патчить? Я могу :) Если меня не заставят потом патч 
пропихивать :)
------- Comment #11 From 2007-07-30 18:31:43 -------
> Мне ещё и Ark патчить? Я могу :) Если меня не заставят потом патч 
> пропихивать :)

См. https://bugzilla.altlinux.org/show_bug.cgi?id=12418 и пиши Zerg. В 
исходниках идут жестокие хаки вывода и, похоже, строка неправильно 
преобразуется.
------- Comment #12 From 2007-08-13 20:00:18 -------
Проверено на .zip "имени winrar" и "имени winxp" (правда, не совсем понятно, не
причастен ли и тут случайно winrar) -- замечательно работает.
------- Comment #13 From 2007-12-13 12:08:38 -------
не работает на zip имени gmail
alt2 работает
alt4 нет
------- Comment #14 From 2007-12-13 12:10:48 -------
Created an attachment (id=2326) [details]
пример файла
------- Comment #15 From 2007-12-13 12:46:15 -------
Проблема с русскими именами в zip принципиально нерешаема! То, что у нас
сделано
- это грязный хак, а zip имени gmail нарушает даже те размытые стандарты,
которые есть на кодирование не-ascii символов. Теоретически можно написать
аутоугадав на базе enca или чего-то подобного, но это сложно и я за это не
возьмусь. Давайте закончим это тем, что ни в одной операционной системе, ни с
одним вариантом архиватора(консольного или графического) нельзя гарантированно
получить русские имена из архива. 

Для данного архива комманда unzip -O utf8 может быть использована
------- Comment #16 From 2008-01-22 20:13:55 -------
2 eostapets: BTW видел
https://bugzilla.altlinux.org/show_bug.cgi?id=4871#c12
?
------- Comment #17 From 2008-01-23 01:43:25 -------
Не знаю, не знаю. Дописать проверку, что имя в архиве написано в utf8 - легко. 
И "архивы имени gmail" будут тоже нормально открываться. Они так сделали, 
потому что 
а) у них Linux
б) другого варианта на будущее - нет
Правда смысла с ничем не совместимом решении нет...

А проблема с русскими именами решаема и решена практически.
------- Comment #18 From 2008-10-08 21:59:28 -------
https://bugzilla.altlinux.org/show_bug.cgi?id=4871#c15