当服务器发送 UTF-8 字节时,如何在不让字符变成纯字节的情况下读取它们? (\x40 等)
最佳答案
您可以使用 IO#set_encoding将套接字的外部编码设置为 UTF-8。
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'socket'
server_socket = TCPServer.new('localhost', 0)
Thread.new do
loop do
session_socket = server_socket.accept
session_socket.set_encoding 'ASCII-8BIT'
session_socket.puts " ᚁ ᚂ ᚃ ᚄ ᚅ ᚆ ᚇ ᚈ ᚉ ᚊ ᚋ ᚌ ᚍ"
session_socket.close
end
end
client_socket = TCPSocket.new('localhost', server_socket.addr[1])
client_socket.set_encoding 'UTF-8'
p client_socket.gets
# => "| ᚁ ᚂ ᚃ ᚄ ᚅ ᚆ ᚇ ᚈ ᚉ ᚊ ᚋ ᚌ ᚍ\n"
关于ruby - 在 Ruby 中,如何从套接字读取 UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11225841/