当我使用以下代码从usocket流中读取数据时:
(let ((stream (socket-stream sk)) line)
(loop for line = (read-line stream)
while line do (format t line)))
当 read-line 遇到非 ascii 字符时,它会抛出异常:
decoding error on stream
#<SB-SYS:FD-STREAM
for "socket 118.229.141.195:52946, peer: 119.75.217.109..."
{BCA02F1}>
(:EXTERNAL-FORMAT :UTF-8):
the octet sequence (176) cannot be decoded.
[Condition of type SB-INT:STREAM-DECODING-ERROR]
read-line 和 read-byte 都不起作用,所以我尝试使用 trivial-utf-8 使用 read-utf-8-string 读取 utf-8 字符串,但它只接受二进制流,似乎 socket-stream 不创建一个二进制流,所以我很困惑如何从具有非 ascii 字符的套接字流中读取?