Проблема с чтением содержимого файла, извлеченного из .cab с помощью libmspack - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь прочитать содержимое файла, который был извлечен из .cab с использованием libmspack gem. Ниже приведен код, с помощью которого я извлекаю файл из кабины.

cab_decompressor = LibMsPack::CabDecompressor.new
cab = cab_decompressor.open('/Users/kalpesh/playground/xml.cab')
cab_decompressor.extract(cab.files, '/Users/kalpesh/playground/blob.txt')

Когда я читаю содержимое в ruby, оно показывает специальные символы (может быть ACSII)

file_content = File.read('/Users/kalpesh/playground/blob.txt')
<\u0000u\u0000p\u0000d\u0000:\u0000U\u0000p\u0000d\u0000a\u0000t\u0000e\u0000 \u0000x\u0000m\u0000l\u0000n\u0000s\u0000:\u0000u\u0000p\u0000d\u0000=\u0000\"\u0000h\u0000t\u0000t\u0000p\u0000:\u0000/\u0000/\u0000s\u0000c\u0000h\u0000e\u0000m\u0000a\u0000s\u0000.\u0000m\u0000i\u0000c\u0000r\u0000o\u0000s\u0000o\u0000f\u0000t\u0000.\u0000c\u0000o\u0000m\u0000/\u0000m\u0000s\u0000u\u0000s\u0000/\u00002\u00000\u00000\u00002\u0000/\u00001\u00002\u0000/\u0000U\u0000p\u0000d\u0000a\u0000t\u0000e\u0000\"\u0000>\u0000<\u0000u\u0000p\u0000d\u0000:\u0000U\u0000p\u0000d\u0000a\u0000t\u0000e\u0000I\u0000d\u0000e\u0000n\u0000t\u0000i\u0000t\u0000y\u0000 \u0000U\u0000p\u0000d\u0000a\u0000t\u0000e\u0000I\u0000D\u0000=\u0000\"\u00004\u0000B\u00006\u00002\u0000A\u0000A\u00003\u00002\u0000-\u00005\u00002\u0000F\u00006\u0000-\u00004\u0000C\u00001\u00005\u0000-\u0000B\u00007\u00003\u00009\u0000-\u00001\u0000C\u00008\u0000E\u00006\u00009\u00006\u0000E\u0000B\u00003\u00003\u0000E\u0000\"\u0000 \u0000R\u0000e\u0000v\u0000i\u0000s\u0000i\u0000o\u0000n\u0000N\u0000u\u0000m\u0000b\u0000e\u0000r\u0000=\u0000\"\u00001\u00000\u00000\u0000\"\u0000>\u0000<\u0000/\u0000u\u0000p\u0000d\u0000:\u0000U\u0000p\u0000d\u0000a\u0000t\u0000e\u0000I\u0000d\u0000e\u0000n\u0000t\u0000i\u0000t\u0000y\u0000>\u0000<\u0000u\u0000p\u0000d\u0000:\u0000P\u0000r\u0000o\u0000p\u0000e\u0000r\u0000t\u0000i\u0000e\u0000s\u0000 \u0000 \u0000L\u0000e\u0000g\u0000a\u0000c\u0000y\u0000N\u0000a\u0000m\u0000e\u0000=\u0000\"\u0000q\u00003\u00001\u00001\u00008\u00008\u00009\u0000_\u0000x\u0000p\u0000_\u00005\u00000\u00008\u00001\u0000\"\u0000 \u0000E\u0000x\u0000p\u0000l\u0000i\u0000c\u0000i\u0000t\u0000l\u0000y\u0000D\u0000e\u0000p\u0000l\u0000o\u0000y\u0000a\u0000b\u0000l\u0000e\u0000=\u0000\"\u0000t\u0000r\u0000u\u0000e\u0000\"\u0000 \u0000U\u0000p\u0000d\u0000a\u0000t\u0000e\u0000T\u0000y\u0000p\u0000e\u0000=\u0000\"\u0000S\u0000o\u0000f\u0000t\u0000w\u0000a\u0000r\u0000e\u0000\"\u0000 \u0000D\u0000e\u0000f\u0000a\u0000u\u0000l\u0000t\u0000P\u0000r\u0000o\u0000p\u0000e\u0000r\u0000t\u0000i\u0000e\u0000s\u0000L\u0000a\u0000n\u0000g\u0000u\u0000a\u0000g\u0000e\u0000=\u0000\"\u0000e\u0000n\u0000\"\u0000"

Но когда я открываю этот файл прямо в текстовом редакторе, он показывает содержимое правильно. Также содержимое отображается правильно, если я использую puts file_content. Поскольку содержимое содержит специальные символы, они не анализируются (файл содержит XML, который я анализирую и преобразую в json)

Вот ссылка для файла которую я пытаюсь прочитать (добавлена ​​ссылка, на всякий случай)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...