1

我试图与之比较message[0]"CONNECT"但它失败了:

puts message[0].dump 
->"\x00C\x00O\x00N\x00N\x00E\x00C\x00T\x00"
puts "CONNECT".dump
->"CONNECT"

有人可以解释一下为什么吗?

4

2 回答 2

2

您的字符串中似乎有很多 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"
于 2012-12-10T12:24:52.567 回答
0

message[0] 的编码不同

尝试这个message[0].encode("UTF-8", :invalid=>:replace, :replace=>"?")

如果它不起作用,您必须尝试不同的编码。我认为这个答案仅对 1.9.* 版本有效。对于旧版本,我认为您必须要求 iconv

于 2012-12-10T10:49:31.113 回答