gpt4 book ai didi

php - IMAP编解码: UTF-8 issue

转载 作者:行者123 更新时间:2023-12-02 22:08:07 25 4
gpt4 key购买 nike

我有一个功能,可以将邮件从 gmail 帐户的一个文件夹移动到另一个文件夹。该功能在移动邮件时功能齐全。我的问题出现在什么时候使用 utf-8 编码的邮箱。我解码 IMAP 文件夹列表响应但是两个值的转储给出了不同的结果。

// 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!";

我不知道为什么这两个字符串不匹配,这是我的问题。

最佳答案

PHP 的函数 imap_utf7_decode($folder)documented返回 ISO-8859-1 编码的字符串。鉴于 IMAP 的修改后的 UTF-7 方案可以编码整个 Unicode 范围(这意味着“很多”)并且 ISO-8859-1 只能表示 256 个单独的字符,您不可能在这种情况下使用该功能。我什至会建议决定提供这种无用功能的 PHP 开发人员在设计它的那一天并不处于最佳状态。

看起来 mbstring 扩展可以做你真正想做的事——使用像 $mailbox = mb_convert_encoding($folder, "UTF-8", "UTF7-IMAP") 这样的东西 ,如 PHP 文档下方的评论中所建议。

关于php - IMAP编解码: UTF-8 issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15807151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com