正在开发基于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
。我需要的是,如果我们可以保留原始字符串?这只是我们可能遇到其他多字节字符的一个例子,那么我们应该知道如何处理这个问题呢?
答案 0 :(得分:0)
没有特定的函数,你只需要处理它所在的编码中的字符串。字符串只是一个字节的blob,它会被的任何字符变成字符将这些字节解释为文本。并且那些东西需要使用正确的编码,否则这些字节不会被解释为它们应该是的字符。有关常见陷阱的详细信息,请参阅Handling Unicode Front To Back In A Web App。
答案 1 :(得分:0)
如注释中所述,您可以使用php mb_ *函数来处理多字节字符。以下是检测字符串编码的示例:
$s="Iñtërnâtiônàlizætiøn";
echo mb_detect_encoding($s); //UTF-8
然后您可以使用它,使用utf8_decode($ s)或任何mb_函数将字符串转换为您希望的编码。