多人数がチャットできるプログラムを作ろうと、webサイトを参考にしながら作り始めたのですが、プロンプトで、日本語を入力するとサーバーに渡った文字が正しく表示されないです。どこがおかしいのでしょうか。

サーバー側 [sever.rb]

require "socket"
server = TCPServer.new(12345)
sockets = [server]
loop do
    r_sockets = IO.select(sockets)[0]
    r_sockets.each do |socket|
        case socket
        when TCPServer
            client = socket.accept
            sockets << client
        when TCPSocket
            unless socket.eof?
                p mes = socket.gets
                for i in sockets.drop(1)
                    i.puts mes
                end
            else
                socket.close
                sockets.delete(socket)
            end
        end
    end
end

クライアント側 [client.rb]

require 'socket'
$socket = TCPSocket.open("localhost",12345)
Thread.new{
    loop do
        $socket.puts(gets.chomp) if $socket
    end
}
while $socket
    p $socket.gets.chomp
end