私は比較しようとし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 を必要とする必要があると思います