我正在处理一个 LAMP 网络服务器。我有用户用来提交存储在 mysql 的文本字段中的文本的表单。通常这些文本是从 Microsoft Office 产品中复制和粘贴的,所以我得到了很多智能引号和破折号。如果我从数据库中检索它们并将它们显示在网页上,这些字符会正确显示,但我遇到麻烦的是使用 phpmailer 类在电子邮件中发送文本。我得到的东西看起来像这样: - (它应该是一个破折号)。
可能很重要的一件事:如果我在 mysql 中打开一个控制台并选择一个包含 emdash 或智能引号的字段,它将错误地显示在我的控制台上: - 但是,如上所述,如果我的 php页面(使用 PDO)选择字段并显示它,它将在浏览器中正确显示(在本例中为 emdash)。
我不确定是否有办法在 phpmailer 中选择字符集(可能是某个地方的简单设置?)或者是否有更好的方法来解决这个问题。不过,我想我应该清楚,“搜索并用常规等效项替换智能引号和破折号”不是我正在寻找的答案(希望这不是唯一的解决方案)。
我找到了这个信息:
我的 php 网页:utf-8
mysql 客户端编码:latin1
mysql 服务器编码:latin1
phpmailer 字符集:iso-8859-1