我试图与之比较message[0]
,"CONNECT"
但它失败了:
puts message[0].dump
->"\x00C\x00O\x00N\x00N\x00E\x00C\x00T\x00"
puts "CONNECT".dump
->"CONNECT"
有人可以解释一下为什么吗?
您的字符串中似乎有很多 NULL 字符。最好弄清楚它们来自哪里,但是要删除它们,您可以使用它。
def remove_null_chrs(str)
str.unpack('C*').select{|x|x != 0}.pack('C*')
end
例如
remove_null_chrs("\x00C\x00O\x00N\x00N\x00E\x00C\x00T\x00")
=> "CONNECT"
message[0] 的编码不同
尝试这个message[0].encode("UTF-8", :invalid=>:replace, :replace=>"?")
如果它不起作用,您必须尝试不同的编码。我认为这个答案仅对 1.9.* 版本有效。对于旧版本,我认为您必须要求 iconv