(J) Ruby: различные результаты использования [] .pack ('m') с использованием Jruby или Ruby - PullRequest
0 голосов
/ 04 марта 2011

Я хочу закодировать изображение JPEG в base64.Гугл, у меня есть этот код:

name = 'path_to_file'
b64 = [open(name).read].pack('m')
puts b64.size

Если этот код выполняется с Jruby1.5.1 (поставляются с netbeans), то результат размера (с моим изображением) его 3518, но если он выполняется с ruby1.8.7, размер его 90. Переходя к html-файлу, работает только закодированный с JRuby.

Кто-то знает причину этого?Заранее спасибо.Примечания: работает в Windows, и я не коснулся кода ruby1.8.7.

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Windows работает по-разному в зависимости от того, открываете ли вы файл в двоичном режиме или нет;измените эту строку на:

b64 = [open(name, 'rb').read].pack('m')
1 голос
/ 04 марта 2011

Я получаю одинаковые размеры в jruby 1.5.1 RVM в Linux и Ruby 1.8.7 в Linux.Я подозреваю, что по какой-то причине вы только кодируете путь.Попробуйте напечатать open(name).read и убедитесь, что ваш файл открывается и успешно читается.Я не думаю, что это так.

jruby-1.5.1 :001 >  [open("test.jpg").read].pack('m').size
 => 3274 

ruby-1.8.7-p302 :003 > [open("test.jpg").read].pack('m').size
 => 3274 
...