Я пытаюсь прочитать содержимое файла, который был извлечен из .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)
Вот ссылка для файла которую я пытаюсь прочитать (добавлена ссылка, на всякий случай)