PHP UDP客户端中可能存在的编码问题

时间:2011-05-01 20:49:41

标签: php character-encoding

我不确定如何标题这个问题。我使用PHP fsockopen()创建UDP连接。然后我使用:fwrite ($this->socket, "command é");但它在服务器上没有做任何事情,如果它有像​​é这样的特殊字符。

我知道我提供的信息含糊不清但我只是想看看我是否应该以某种方式对我发送的信息进行编码以便在fwrite中传递它?

感谢。

1 个答案:

答案 0 :(得分:0)

你的问题有点不清楚。您没有谈论您的服务器协议或实现。而且,你承认了!

你理所当然地怀疑你的é字符是问题的根本原因。我建议你检查的唯一一件事是所需的字符编码。默认情况下,如果您将字符串写入流,则使用默认系统编码对其进行编码,这些编码在节点之间可能会有所不同(如果运行Windows和Linux,则 会有所不同)。

可能发生的事情是您的服务器没有收到command é,而是收到其他内容。您必须确保客户端和服务器都使用相同的编码,即。 UTF8。

我不知道您是否可以控制服务器的源代码,但我会在客户端建议

fwrite($this->socket, utf8_encode("command é"));

并且,在服务器端,使用utf8_decode()

解析输入