gpt4 book ai didi

ruby - 如何在 Ruby 中通过 TcpSocket 发送 UTF-8 编码的字符串

转载 作者:行者123 更新时间:2023-12-03 11:53:13 25 4
gpt4 key购买 nike

如何通过 TcpSocket 发送 UTF-8 编码的字符串在 ruby ?当我尝试使用以下代码时

msg = $stdin.gets.chomp
@server.puts(msg.encode('utf-8'))

它给了我服务器上的“ASCII-8BIT”编码:
msg = client.gets.chomp
puts msg.encoding

输出

ASCII-8BIT



为什么?我究竟做错了什么?

最佳答案

通过连接发送的数据只是构成字符串的原始字节,而不是客户端与它们关联的编码。因此,服务器无法确定编码应该是什么,默认为 ASCII-8BIT这实际上意味着未知。

如果您知道数据将始终为 UTF-8,您可以使用 set_encoding 在套接字上始终将接收到的数据标记为正确的编码:

client.set_encoding('UTF-8')
msg = client.gets.chomp

如果每个客户端的数据可能采用不同的编码,您将需要制定一些协议(protocol),客户端在发送实际数据之前告诉服务器该编码是什么。然后服务器可以使用 set_encoding如上,或使用 force_encoding 在结果字符串上。

关于ruby - 如何在 Ruby 中通过 TcpSocket 发送 UTF-8 编码的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25303943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com