【发布时间】:2018-04-30 13:14:38
【问题描述】:
我有一个网站,允许人们使用 Outlook 中的电子邮件主题行向其发布内容。使用 PHP 和 imap,我获取文本的主题行并将其存储在 mysql 数据库中。但是每隔一段时间,有人会将网站上的文本复制到该电子邮件的主题行中,我会收到乱码。类似这样:
=?Windows-1252?Q?_Every_day_in_our_offices_we_recycle_cardboard,铝?= =?Windows-1252?Q?=96_won=92t_you_join_us=3F?=
我所做的是尝试解码此文本,以便使用以下代码在页面上正常显示:
$subject = strip_tags($mailHeader->subject);
$header = imap_mime_header_decode($subject);
$subject = "";
for($i=0;$i<count($header);$i++)
{
$subject .= $header[$i]->text;
}
完成后,我删除了大部分乱码文本,但留下了原始主题行文本中的破折号和弯引号的替换字符。看下面的结果:
每天在我们的办公室里,我们都在回收纸板、铝……你愿意加入我们吗?
网站的字符集设置为 UTF-8。当我将网站字符集设置为 ISO-8859-1 时,替换字符将替换为弯引号和破折号,这很好,但我想将网站的字符集保留为 UTF-8。
任何关于如何在不将字符集更改为 ISO-8859-1 的情况下摆脱替换字符的帮助都会很棒。谢谢。
【问题讨论】:
标签: php encoding utf-8 character-encoding