ruby-on-rails – Rails send_data抛出“UTF-8中的无效字节序列”…但为什么?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails send_data抛出“UTF-8中的无效字节序列”…但为什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Rails生成带有可执行文件wkhtmltopdf的PDF,然后使用send_data将结果作为PDF文件发送给用户.
view = ActionView::Base.new(ActionController::Base.view_paths,{})
 html = "<h1>A heading</h1>"
 pdfdata = `echo '#{html}' | #{RAILS_ROOT}/lib/pdf/wkhtmltopdf-i386 - -`
 send_data pdfdata,:filename => 'readthis.pdf',:disposition => 'attachment',:type => "application/pdf"

PDF正确生成,但Rails从send_data方法引发ArgumentError(UTF-8中的无效字节序列).将其更改为发送“foobar”为:type => text / html使它工作,所以它绝对有一个pdfdata的问题.

我不明白send_data是不是应该发送二进制数据?当然这是无效的UTF-8.还是我错过了什么?

谢谢

解决方法

Rails假定UTF-8.明确地说明它是二进制数据解决问题.谢谢你的帮助.
pdfdata.force_encoding('BINARY')

猜你在找的Ruby相关文章