Текущее время: Вт, июл 22 2025, 16:28

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: CL_ABAP_ZIP и архивирование файлов с кириллическими именами
СообщениеДобавлено: Пн, апр 11 2016, 18:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Добрый день, коллеги!

Программно генерирую xlsx-файлы и сохраняю их в zip-архив с помощью CL_ABAP_ZIP.
Имена xlsx-файлов содержат символы кириллицы. Но они заменяются на решетки. Скрин содержимого архива:
Изображение

Если устанавливаю атрибут
Code:
lo_zip->support_unicode_names = abap_true.

то всё еще унылее:
Изображение

Если назвать латиницей, то всё исправно открывается и распаковывается.

В гугле встретил упоминание ФМа SCP_REPLACE_STRANGE_CHARS
но с параметрами по умолчанию он выдает транслитерацию, а какие значения ему можно подсунуть - хз. Хотя какой-то немец писал, что его умляуты стали показываться корректно.

Что можно посоветовать?

_________________
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CL_ABAP_ZIP и архивирование файлов с кириллическими именами
СообщениеДобавлено: Пн, апр 11 2016, 19:51 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Попробуйте конвертировать кириллические имена в UTF-8

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CL_ABAP_ZIP и архивирование файлов с кириллическими именами
СообщениеДобавлено: Вт, апр 12 2016, 04:05 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
У самого ZIP-формата видимо есть какие-то проблемы с юникодом, насколько я знаю обычно ZIP-ы создаются в неюникодном формате. Я бы для теста попробовал в отладчике подменить кодовую страницу которая используется в методе add на `1504`:

Code:
  DATA: conv       TYPE REF TO cl_abap_conv_out_ce,
        conv_cp437 TYPE REF TO cl_abap_conv_out_ce,
        conv_utf8  TYPE REF TO cl_abap_conv_out_ce,
        cp437      TYPE abap_encoding value '1107', " IBM 437
        utf8       TYPE abap_encoding value '4110'. " UTF-8
  if support_unicode_names = abap_true.
     conv = cl_abap_conv_out_ce=>create( encoding = utf8
                                      ignore_cerr = abap_true
                                      replacement = '#' ).
  else.
     conv = cl_abap_conv_out_ce=>create( encoding = cp437
                                      ignore_cerr = abap_true
                                      replacement = '#' ).
  endif.

В отладчике в переменную cp437 положить значение 1504


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: CL_ABAP_ZIP и архивирование файлов с кириллическими именами
СообщениеДобавлено: Вт, апр 12 2016, 09:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
Я бы для теста попробовал в отладчике подменить кодовую страницу которая используется в методе add на `1504`:

Увы, не помогло
Изображение

_________________
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CL_ABAP_ZIP и архивирование файлов с кириллическими именами
СообщениеДобавлено: Вт, апр 12 2016, 09:56 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
Попробуйте конвертировать кириллические имена в UTF-8

Дык вроде метод add конвертирует. Третья строка в этом фрагменте:

Code:
  utf8       TYPE abap_encoding value '4110'. " UTF-8
  if support_unicode_names = abap_true.
     conv = cl_abap_conv_out_ce=>create( encoding = utf8
                                      ignore_cerr = abap_true
                                      replacement = '#' ).
  else.
     conv = cl_abap_conv_out_ce=>create( encoding = cp437
                                      ignore_cerr = abap_true
                                      replacement = '#' ).
  endif.
  conv->convert( EXPORTING data = <file>-name IMPORTING buffer = <ext>-filename ).

_________________
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CL_ABAP_ZIP и архивирование файлов с кириллическими именами
СообщениеДобавлено: Вт, апр 12 2016, 10:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 calm: Попробовал - да, имя конвертится. Попробовал открыть с помощью winrar и 7zip: везде имя видно нормально. Кириллические имена плохо отображаются только если открывать проводником винды. Наверное, вы открывали им же? Т.е. проблема получается не на стороне SAP.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CL_ABAP_ZIP и архивирование файлов с кириллическими именами
СообщениеДобавлено: Вт, апр 12 2016, 11:28 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 09:02
Сообщения: 207
calm написал(а):
Цитата:
Я бы для теста попробовал в отладчике подменить кодовую страницу которая используется в методе add на `1504`:
Увы, не помогло



А попробуйте еще `1503` в интернетах пишут
Code:
...имена файлов в ZIP-архиве хранятся в кодировке DOS,
соответствующей языку локали...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: CL_ABAP_ZIP и архивирование файлов с кириллическими именами
СообщениеДобавлено: Вт, апр 12 2016, 11:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
Попробовал открыть с помощью winrar и 7zip: везде имя видно нормально.


У меня никаких утилит нет и с этим ничего не поделать - такова воля заказчика.
Доступен только проводник. Если в проводнике архив распаковать с помощью пункта контекстного меню, то распаковывается xlsx с кривым именем
Изображение

_________________
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CL_ABAP_ZIP и архивирование файлов с кириллическими именами  Тема решена
СообщениеДобавлено: Вт, апр 12 2016, 11:39 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
А попробуйте еще `1503` в интернетах пишут


Помогло! Огромное спасибо! :pivo:

_________________
С уважением.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB