0

我正在研究基于 php 的 mime 解析器。如果正文包含字符串,就像Iñtërnâtiônàlizætiøn我们看到的那样,它正在转换为Iñtërnâtiônàlizætiøn. 有人可以建议如何处理(什么功能)这样的字符串吗?

所以我们正在做以下事情

  1. 使用 Zend 库连接到 IMAP 服务器

    mail = new Zend_Mail_Storage_Imap($params);
    
  2. 使用阅读消息

    $message = $mail->getMessage($i);
    

    在循环。

  3. 当我们打印时,$message我们会看到字符串,例如Iñtërnâtiônàlizætiøn打印为Iñtërnâtiônà lizætiøn.

我需要的是,是否有某种方法可以保留原始字符串?这只是我们可能会遇到其他多字节字符的一个示例,那么如何知道我们一般如何处理呢?

4

2 回答 2

0

对此没有特定的功能,您只需要在其所在的编码中处理字符串。字符串只是一个字节块,通过将这些字节解释为文本的任何内容,它都会变成字符。并且某些东西需要为此使用正确的编码,否则这些字节不会被解释为它们应该是的字符。请参阅在 Web 应用程序中从前到后处理 Unicode,了解常见缺陷的概要。

于 2012-07-02T08:30:49.790 回答
0

如评论中所述,您可以使用 php mb_* 函数来处理多字节字符。这里只是一个检测字符串编码的例子:

$s="Iñtërnâtiônàlizætiøn";
echo mb_detect_encoding($s);  //UTF-8

然后您可以使用它,使用 utf8_decode($s) 或任何 mb_ 函数将字符串转换为您想要的编码。

于 2012-07-02T09:11:38.193 回答