带有空字节的Ruby字符串

带有空字节的Ruby字符串,ruby,string,bytearray,Ruby,String,Bytearray,我有这门课: class CountedOctet attr_reader :length, :data def initialize @length = nil @data = "" end def parsefile(f) @length, = f.read(4).unpack("N") @data, = f.read(@length).unpack("a#{@length}") end end 它从(Python中的)移植到Ruby 一

我有这门课:

class CountedOctet
  attr_reader :length, :data
  def initialize
    @length = nil
    @data = ""
  end
  def parsefile(f)
    @length, = f.read(4).unpack("N")
    @data, = f.read(@length).unpack("a#{@length}")
  end
end
它从(Python中的)移植到Ruby

一切正常,文件被读取,但如果我访问数据,它就会被切断。它的长度是1163(这是正确的),但在位置152,字符串的字节是0。这似乎终止了字符串。位置153是正确的,因此读数和拆包似乎工作正常。有没有办法阻止Ruby在空字节处终止字符串


python脚本使用同一个文件,因此它不应该是损坏/错误的文件。

问题是,我对字符串使用了
'
。使用
正确解释了零字节。

您使用的是哪个ruby版本?@tompave我使用的是1.9.3您从何处获得此字符串?UTF-8字符串在中间没有零字节。@ SerioTululeSev我正在把一个Python脚本移植到Ruby中。我通过file.read(@length).unpack(“a#{length}”)得到字符串。那是什么类型的文件?二元的?字节数组很少也是有效字符串。