Проблемы с кодировкой символов с генерируемыми PHP vCards в Outlook

Мы сталкиваемся с проблемами кодирования символов, которые пытаются создать vcards в PHP.

В именах Outlook, которые используют специальные символы, искажаются, например, «é» становится «Ã ©».

Мы обновили заголовок и разделы FN и N для кодировки символов Windows, но проблема остается.

Благодарен за любые предложения.

Выдержка Vcard:

BEGIN:VCARD VERSION:3.0 REV:2013-03-27 19:37:46 FN;CHARSET=Windows-1252:Namé S. Nameé N;CHARSET=Windows-1252:Namé;Namé;;; TITLE:Associate ORG:Company EMAIL;TYPE=internet,pref:name@abc.com TZ:-0400 END:VCARD 

Заголовок PHP для Vcard:

  header("Content-type: text/x-vcard; charset=windows-1252;"); header("Content-Length: ".strlen($vc->card)); header("Content-Disposition: attachment; filename=".$vcard_name.".vcf"); header("Pragma: public"); 

Были и некоторые подобные вопросы, но ничто не казалось окончательным. Указав charset в полях vcard, похоже, что я был на полпути.

Я, наконец, получил его работу, изменив следующее на «utf-8;»:

  header("Content-type: text/x-vcard; charset=CHARSET=utf-8;"); 

То же самое относится к полям имен в самом vcard. Задание utf-8, похоже, разрешило проблемы отображения специальных символов:

 $this->card .= "FN;CHARSET=utf-8:".$new_display_name.$this->data['short_mode']; $this->card .= "N;CHARSET=utf-8:" 

Открыт в Outlook 2007 со всеми символами акцента, отображаемыми по назначению.

Ваше решение не сработало для меня, у меня все еще есть забавные персонажи в Windows.

Что для меня работало, вместо этого использовалось ISO-8859-1. Вы можете преобразовать UTF8 в ISO-8859-1 в PHP с использованием utf8-decode () , а используя ENCODING=iso-8859-1 в Vcard для соответствующих полей, он работает на большинстве клиентов на основе UTF-8, которые я тестировал на ,

Заголовок:

 Content-Type: text/x-vcard; charset=iso-8859-1 

Пример Vcard:

 N;CHARSET=iso-8859-1:Göteborg 

Проверено на Windows, OS X, IOS и Android.