【问题标题】:PHP - Bytes to UTF8 character?PHP - UTF8 字符的字节数?
【发布时间】:2013-01-10 14:36:22
【问题描述】:

我需要处理一些电子邮件,其中包含诸如以下的字符短语:

=E2=82=AC

这显然是欧元符号的字节。

我也得到诸如:

VALIGN=3D"top"

我不确定这意味着什么(3D 部分)。

还有其他如:

FirstName=C2=A0LastName

有谁知道如何通过 PHP 将其转换为正确的字符?

谢谢。

【问题讨论】:

  • 这种编码称为quoted-printable
  • 听起来您没有正确处理电子邮件。电子邮件系统/api 应该负责在您的代码看到它之前对其进行解码(带引号的可打印编码,=3D 是等号)。您如何获得消息正文?
  • @MarkReed 我需要手动解析它。感谢您告诉我有关编码的信息。看看这对我有没有帮助。
  • 这很好,但是您不需要从头开始编写自己的代码来完成它。看看例如Mail_MIME 库。
  • 谢谢@MarkReed 我会去看看!如果您创建答案,我会接受它,否则如果它无关紧要,我将删除或关闭此线程?

标签: php email unicode utf-8 utf


【解决方案1】:

正如 Gumbo 指出的那样,字符被编码为带引号的可打印字符串。要解码,请使用this aptly named function

$string = '=E2=82=AC';
echo quoted_printable_decode($string);
// echoes out €

但正如 MarkReed 所指出的,如果您的邮件逻辑有缺陷,这并不是真正的解决方案。如果此功能在您的应用中占很大一部分,请考虑使用强大的电子邮件框架或库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 2011-01-20
    • 2014-11-04
    • 1970-01-01
    相关资源
    最近更新 更多