如何向服务器发送 UTF-8 解码后为任意序列的文本
https://chatgpt.com/c/68720461-29e8-8003-8faa-2b099926add4
直接使用
send(long_to_bytes(m))
是有可能失败的!取 m=1234(16进制下为 4d2),则发送的序列为 \x04\xd2,这不是合法 UTF-8 序列,导致服务端对其解码时会篡改发送的内容!(具体会篡改为 e0d2)
正确的解决方法:
send(long_to_bytes(m).decode("latin-1").encode("utf-8"))
latin-1 编码将 m 中字节一一对应至 UTF-8 字符,encode 为 UTF-8 后得到的是 \x04\xc3\x92,这个是合法的。
而作为一个接受文本的 server,其大概率会对输出进行 UTF-8 解码,得到的 raw byte 将是 \x04\xd2,这是我们想要的。

浙公网安备 33010602011771号