символы rubyzip и unicode в именах файлов - PullRequest
1 голос
/ 15 февраля 2012

Я создаю zip-архив с классами rubyzip gem и Zip::ZipOutputStream и у меня возникла проблема с буквами юникода (кириллицей) - в архиве они представлены в виде вопросительных знаков, например ????? ???? ??.doc. Rubyzip поддерживает Unicode?

Ответы [ 3 ]

1 голос
/ 16 февраля 2012

Я посмотрел на методы rubyzip, и кажется, что rubyzip не может изменить язык.Вероятно, он использует кодовую страницу вашего компьютера по умолчанию.Вместо этого вы можете использовать chilkat zip, как в этом примере, если только у вас нет особых требований, которые chilkat не может удовлетворить.

0 голосов
/ 05 апреля 2018

Вы можете просто запустить zip напрямую.

`cd yourfolder; zip archivename file1 file2`

Обратите внимание на конкретные цитаты. У меня работал в Ubuntu для кириллических имен файлов, в то время как rubyzip создавал архив с нечитаемыми именами файлов.

0 голосов
/ 02 июля 2014

Вы можете использовать следующий фрагмент для преобразования UTF-8 в CP437 , которые охватывают некоторые символы Юникода (всего несколько). Windows 7 и старше предполагают, что имена файлов закодированы в CP437.

# first normalize the string
normalized_filename = input.mb_chars.normalize.to_s
# then encode in cp437
filename_for_zip = normalized_filename.encode("cp437")
# add file to zip
zipfile.add(filename_for_zip, pdf_file)
...