我有一个函数,用于将邮件从一个文件夹移动到另一个gmail账户上。 该功能在移动邮件时功能完整。我的问题出现在使用utf-8编码邮箱的 。我解码IMAP文件夹列表响应 但两个值的转储给出不同的结果。IMAP编码和解码:UTF-8问题
// Getting the folders
$folders = imap_list(CONNECTION, MAILBOX, PATTERN);
// After a foreach, stripping slash, prefix and such
// $folder is the raw mailbox name from the IMAP list
$mailbox = utf8_encode(imap_utf7_decode($folder)); // = string(12) "Tæstbåks"
// The entered search from the client
$search_for = "Tæstbåks"; // = string(10) "Tæstbåks"
if($search_for == $mailbox)
print "Yeah!";
else
print "Noo!";
我不知道为什么那两个字符串不匹配,那是我的问题。
打印两者的'bin2hex()'。另外,你为什么使用'utf8_encode'? – Esailija 2013-04-04 09:29:37
我正在使用'utf8_encode()'将其格式设置为正确的查看。尝试了不同编码的dosins,这是唯一一种以正确的格式返回邮箱的方法。 关于'BIN2HEX()'函数两者的返回值如下: IMAP邮箱=字符串(24) “5400c3a673746200c3a56b73” Serach_for =字符串(20) “54c3a6737462c3a56b73” 因此,他们依旧不匹配 – 2013-04-04 09:45:50
但它只是从ISO-8859-1转换为UTF-8。如果您的输入不是ISO-8859-1,那么它会失败,如您所见。 – Esailija 2013-04-04 09:48:09