gpt4 book ai didi

ruby - 如何将 StringIO (pdf) 数据保存到文件中

转载 作者:数据小太阳 更新时间:2023-10-29 07:46:14 28 4
gpt4 key购买 nike

我想用 ruby​​ 保存位于外部远程服务器中的 pdf 文件。 pdf 文件在 StringIO 中。我尝试使用 File.write 保存数据,但它不起作用。我收到以下错误。

ArgumentError: string contains null byte

现在如何保存?

最佳答案

require 'stringio'

sio = StringIO.new("he\x00llo")

File.open('data.txt', 'w') do |f|
f.puts(sio.read)
end


$ cat data.txt
hello

对评论的回应:

好的,试试这个:

require 'stringio'

sio = StringIO.new("\c2\xb5")
sio.set_encoding('ASCII-8BIT') #Apparently, this is what you have.

File.open('data.txt', 'w:utf-8') do |f|
f.puts(sio.read)
end

--output:--
1.rb:7:in `write': "\xB5" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)

要消除该错误,您可以将 StringIO 的编码设置为 UTF-8:

require 'stringio'

sio = StringIO.new("\c2\xb5")
sio.set_encoding('ASCII-8BIT') #Apparently, this is what you have.

sio.set_encoding('UTF-8') #Change the encoding to what it should be.

File.open('data.txt', 'w:UTF-8') do |f|
f.puts(sio.read)
end

或者,您可以使用 File.open 模式:

require 'stringio'

sio = StringIO.new("\c2\xb5")
sio.set_encoding('ASCII-8BIT') #Apparently, this is what you have.

File.open('data.txt', 'w:UTF-8:ASCII-8BIT') do |f|
f.puts(sio.read)
end

但是,这假设数据是用 UTF-8 编码的。如果您实际上有二进制数据,即未编码的数据,例如因为它表示 .jpg 文件,那么这将不起作用。

关于ruby - 如何将 StringIO (pdf) 数据保存到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29023892/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com