«Умные цитаты» не отображаются правильно в электронной почте от phpmailer - PullRequest
4 голосов
/ 21 декабря 2010

Я имею дело с веб-сервером LAMP. У меня есть формы, которые пользователи используют для отправки текста, который хранится в текстовом поле в MySQL. Часто этот текст копируется и вставляется из продуктов Microsoft Office, поэтому я получаю много умных цитат и ошибок. Эти символы отображаются правильно, если я получаю их из базы данных и отображаю их на веб-странице, но у меня возникают проблемы с отправкой текста в электронном письме с использованием класса phpmailer. Я получаю материал, который выглядит следующим образом: (где это должен быть emdash).

Одна вещь, которая может быть важна: если я открою консоль в mysql и выберу поле, содержащее в себе emdash или умную кавычку, оно будет некорректно отображаться на моей консоли: однако, как указано выше, если моя php-страница (с использованием PDO) выбирает поле и отображает его, оно будет правильно отображаться в браузере (в данном случае в качестве emdash).

Я не уверен, есть ли способ выбрать набор символов в phpmailer (может быть, это где-то простая настройка?) Или есть лучший способ обойти эту проблему. Я думаю, что мне должно быть ясно, что «поиск и замена умных кавычек и вставок на их обычные эквиваленты» - это НЕ тот ответ, который я ищу (надеюсь, это не единственное решение).

Я нашел эту информацию:
Моя php-страница: utf-8
кодировка клиента mysql: latin1
Серверная кодировка mysql: latin1
Набор символов phpmailer: iso-8859-1

Ответы [ 2 ]

4 голосов
/ 22 декабря 2010

Набор символов можно переключить в phpmailer с помощью следующего кода:

$myMail->CharSet  = "UTF-8";

Это решило мою проблему.Типичные кавычки и двойные черточки появляются в моих электронных письмах от phpmailer, как и ожидалось.Это, возможно, был вопрос сорта noobish (краснеет).Спасибо, полковник Шрапнель, что побудил меня разобраться в том, какую кодировку использовали все кусочки головоломки.Я бы проголосовал за тебя, но не имел бы репутацию.

Для тех, кто интересуется домашним заданием, эта ссылка действительно помогла мне понять основы кодирования:
http://www.joelonsoftware.com/articles/Unicode.html

0 голосов
/ 21 декабря 2010

Пакет PEAR Mail_MIME позволяет вам сделать это через http://pear.php.net/manual/en/package.mail.mail-mime.get.php Я почти уверен, что использовал эту функцию раньше, но не в позитивном ключе.

Возможно, вам также понадобится выполнить все через iconv для нормализации наборов символов в один, если имеется несколько источников данных.

...