我正在研究基于php的mime解析器。如果正文包含像Iñtërnâtiônàlizætiøn
这样的字符串,我们看到它正在转换为 Iñtërnâtiônà lizætiøn
.有人可以建议如何处理此类字符串(什么函数)吗?
因此,我们正在执行以下操作
-
使用 Zend Library 连接到 IMAP 服务器
mail = new Zend_Mail_Storage_Imap($params);
-
使用 阅读消息
$message = $mail->getMessage($i);
在循环中。
- 当我们打印
$message
时,我们看到字符串,例如Iñtërnâtiônàlizætiøn
打印为Iñtërnâtiônà lizætiøn
。
我需要的是是否有某种方法可以保留原始字符串?这只是我们可能会遇到其他多字节字符的一个例子,那么我们通常如何处理这个问题呢?
没有特定的函数,你只需要按照它的编码处理字符串。字符串只是一团字节,它通过将这些字节解释为文本的任何内容转换为字符。并且某些东西需要使用正确的编码,否则这些字节不会被解释为它们应该的字符。请参阅在 Web 应用程序中从前到后处理 Unicode,了解常见陷阱的概要。
如
注释中所述,您可以使用 PHP mb_* 函数来处理多字节字符。这里只是一个检测字符串编码的示例:
$s="Iñtërnâtiônàlizætiøn";
echo mb_detect_encoding($s); //UTF-8
然后你可以使用它,使用 utf8_decode($s) 或任何mb_函数将字符串转换为您想要的编码。