【问题标题】:Howto set PHP socket_write and socket_read character encoding?如何设置 PHP socket_write 和 socket_read 字符编码?
【发布时间】:2009-08-20 10:31:22
【问题描述】:

我正在编写一个 PHP 服务器,而客户端正在以特定的字符编码发送数据。现在,我想告诉服务器以相同的字符编码集读取和写入数据。

我应该如何为 PHP 的 socket_readsocket_write 方法指定字符编码集?

【问题讨论】:

    标签: php sockets character-encoding


    【解决方案1】:

    这些函数传输未转换的字符串(即逐字节),因此您无法设置字符编码。但这也意味着,您不必这样做。您将在另一侧使用完全相同的编码获得完全相同的字符串。

    您可以在发送之前/之后使用mb_convert_encoding() 转换字符串。

    【讨论】:

    • 这是我理解的接收。但是当服务器发送数据时,它会在什么字符编码集中这样做呢?如何设置此默认字符编码?
    • 以字符串所具有的字符集发送。
    • 嗯...以下字符串可以是 Unicode,但也可以是 UTF-8:“hello”。那么如何让它选择两者之一呢?
    • 或者,当我设置字符串时... $string = "hello" - 如何让它以特定的编码设置字符串?
    • 如果您编写 $string = "hello",它将具有语句所在的源文件的编码。您的“hello”示例表明您需要有关字符编码的更多背景信息(utf8 是一个 unicode 变体)。我会推荐这个:joelonsoftware.com/articles/Unicode.html
    【解决方案2】:

    PHP 具有接近于零的自动字符编码支持。您必须跟踪任何给定字符串的编码,并确保每次进入或离开您的代码时都将其转换为适当的编码。这样做的好方法是确定所有内部字符串都采用某种编码(例如 PHP),并在输入的过程中将每个传入的字符串转换为该编码。

    (或使用其他语言)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多