2014-11-18 12 views
0

Я пишу метод, который позволяет пользователю создавать файл vCard на основе некоторой информации. Он работает достаточно хорошо, и пользователь может без проблем открыть сгенерированный файл с Microsoft Outlook (протестирован в версиях 2010 и 2013). Но когда он хочет открыть его с помощью контактов Windows, акцентированные символы не отображаются хорошо, тогда как я установил кодировку для разных полей в UTF-8.Акцентированные символы vCard, не отображающиеся в Windows Контакты

Вот пример сгенерированного визитной карточки:

BEGIN:VCARD 
VERSION:4.0 
FN;CHARSET=utf-8:Vandenbergh Cédric 
N;CHARSET=utf-8:Vandenbergh;Cédric;;; 
TITLE;CHARSET=utf-8:Manager d'entité 
END:VCARD 

И вот что я получаю при его открытии с Windows Contacts:

vCard in Windows Contacts

Может быть ошибка в Windows Contacts (тестируется под Windows 8.1)? Или я чего-то не хватает?

Редактировать

Вот код, я использую для пользователя, чтобы загрузить визитную карточку:

Context.Response.Clear(); 
Context.Response.Buffer = true; 
Context.Response.ContentType = "text/x-vCard; charset=utf-8"; 
Context.Response.AddHeader("Content-Disposition", "attachment;filename=file.vcf"); 
Context.Response.Write(user.GetVCard()); // Get vCard content 
Context.Response.Flush(); 
Context.Response.End(); 

Редактировать 2/10/15

Я до сих пор нет идея о том, как решить эту проблему. На мой взгляд, это действительно может быть ошибка Windows Contacts, но я не могу найти что-либо в Интернете, чтобы подтвердить мое впечатление.

ответ

0

Только потому, что вы добавляете параметр «CHARSET = utf-8», это не означает, что значение будет записано в UTF-8. Вероятно, вы не устанавливаете кодировку символов в «UTF-8» при записи vCard.

Также обратите внимание, что vCard версии 4.0 не поддерживает параметр «CHARSET». В спецификации указано, что все vCards ДОЛЖНЫ быть записаны в UTF-8.

+0

Спасибо за ваш ответ, Майкл. Я отредактировал свой вопрос, добавив код, который я использую для загрузки файла vCard. Как вы можете видеть, я установил кодировку символов в свойстве ContentType, но без успеха. Я также пытался использовать версию 2.1 vCard Windows Contacts, безусловно, поддерживает, но здесь также без каких-либо успехов. Я видел [в этой ссылке] (http://answers.microsoft.com/en-us/windows/forum/windows8_1-ecoms/utf-8-vcard-is-unsupported-by-windows-contacts-and/2ce5f5b1 -4be4-4ce4-8063-9518323eb32b) у кого-то, похоже, такая же проблема, но ответа нет. – Opec

+0

@Opec Есть ли способ установить кодировку символов на объект Context.Response? Что-то вроде: 'Context.Response.Encoding =" UTF-8 "'. Включение кодировки в ContentType может быть недостаточно. Другими словами, это может быть запись vCard в кодировке символов по умолчанию вашей системы, которая в Windows - это ** не ** UTF-8. – Michael

+0

Да, это возможно, добавив следующую строку кода: 'Context.Response.ContentEncoding = Encoding.UTF8'. К сожалению, ничего не меняется. У меня такое впечатление, что это ошибка Windows Contacts. В настоящее время я не вижу ничего другого, что мог бы сделать, чтобы символы были хорошо отображены. – Opec

 Смежные вопросы

  • Нет связанных вопросов^_^