Ruby on rails Rails发送“U数据抛出”;UTF-8中的字节序列无效“;。。。但是为什么呢?

Ruby on rails Rails发送“U数据抛出”;UTF-8中的字节序列无效“;。。。但是为什么呢?,ruby-on-rails,utf-8,Ruby On Rails,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

我使用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"
view=ActionView::Base.new(ActionController::Base.view_路径,{})
html=“标题”
pdfdata=`echo'#{html}'|#{RAILS_ROOT}/lib/pdf/wkhtmltopf-i386--`
发送数据pdfdata,:filename=>'readthis.pdf',:disposition=>'attachment',:type=>“application/pdf”
PDF是正确生成的,但是Rails抱怨send\u数据方法出现
ArgumentError(UTF-8中的字节序列无效)
。将其更改为以
的形式发送“foobar”:type=>text/html
使其正常工作,因此它肯定会遇到
pdfdata
的问题

我不明白。
send_data
不应该发送二进制数据吗?当然它不是有效的UTF-8。还是我遗漏了什么


谢谢

您是否检查了变量pdfdata并检查其是否正确?

Rails采用UTF-8。明确地告诉它是二进制数据解决了这个问题。谢谢你的帮助

pdfdata.force_encoding('BINARY')

您使用的是哪个版本的ruby?发送文件有效吗?您是否也尝试过disposition=>inline?当然,它包含的字符不能用终端输出或vim正确表示,但这是意料之中的,对吗?这是一个PDF文件。