You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中使用File.write时如何指定编码以保存图片二进制文件?

解决方案

这个错误是因为File.write默认使用文本写入模式,会自动尝试将输入内容转换为系统默认编码(通常为UTF-8),而你获取的图片二进制数据编码为ASCII-8BIT,其中包含大量无法转换为UTF-8的字节,因此触发转换错误。

你可以通过以下方式解决:

  • 方法1:直接在File.write参数中指定二进制写入模式,跳过编码转换,修改对应代码行即可:
    File.write(FILE_LOCATION, binary, mode: 'wb')
    
    wb代表二进制写入模式,不会做任何编码转换,直接将原始二进制数据写入文件。
  • 方法2:也可以使用标准的文件打开写入写法,显式指定二进制模式:
    File.open(FILE_LOCATION, 'wb') do |file|
      file.write binary
    end
    

额外注意:你当前的代码在循环中所有图片都写入同一个FILE_LOCATION路径,会导致前面的图片被覆盖,建议根据url生成唯一文件名,比如使用Digest::MD5.hexdigest(url)作为文件名的一部分,避免覆盖问题。

内容的提问来源于stack exchange,提问作者McKay Whiting

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:45:02