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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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