MS "VCard" Французские специальные символы - PullRequest
5 голосов
/ 04 апреля 2011

Я пытаюсь создать VCard на лету для сайта. Я просто открываю «настоящую» VCard, однажды созданную с помощью Outlook с Notepad ++, и увидела, что мне нужно для ее создания на лету. Все отлично работает, и я могу добавить все, что мне нужно, где мне нужно. Вместо одной точки:

  • Все французские символы, такие как É, À, Ê, Ç и т. Д., Показаны как: Симон Дугр Ã .

Я добавил все, что было предложено Outlook, и тот, кто предлагает добавить: «CHARSET = Windows-1252:» перед моей строковой записью (также попробовал ISO-8859-1, UTF8, UTF7, UTF-8, UTF-7) и ни один из них не работает.

Есть предложения?

РЕДАКТИРОВАТЬ (после ответа Александра С.)
Вот источник VCard. Обратите внимание, что источник показывает его правильно, но когда я открываю его в Outlook, у меня все еще есть проблема с акцентом :

НАЧАТЬ: VCARD Версия: 2,1
N; LANGUAGE = Fr-ча; CHARSET = UTF-8: Dugré; Simon
ORG; CHARSET = UTF-8: CompanyNameéàêâç
TEL; WORK; VOICE: 5555555555
X-MS-ПР-DEFAULT-ПОЧТА-АДРЕС: 0
EMAIL; PREF; ИНТЕРНЕТ: hello@world.com
X-MS-OL-DESIGN; CHARSET = utf-8: [VCard HTML Format]
REV: 20110404T135700
END: VCARD

Ответы [ 5 ]

6 голосов
/ 04 октября 2012

Вы должны написать CHARSET=utf-8, а не CHARSET=UTF-8.

Спецификации

vCard предполагают, что набор символов должен быть независимым от регистра, но Outlook это не волнует.

1 голос
/ 05 апреля 2011

Вот строка хорошо :

currentPage.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0} {1}.vcf", this.FirstName, this.LastName));
currentPage.Response.ContentType = "text/x-vcard";
currentPage.Response.ContentEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1"); // THIS LINE
currentPage.Response.Write(content);
currentPage.Response.End();

Вместо:

currentPage.Response.Charset = "ISO-8859-1";
0 голосов
/ 31 января 2014

У меня также была проблема со специальными символами (польский язык). Я не уверен, есть ли проблема с кодировкой utf-8 в Outlook или чем-то еще. После нескольких подходов с utf-8:

Response.ContentType = "text/x-vcard; charset=UTF-8";

Response.HeaderEncoding = Encoding.GetEncoding("UTF-8");

Response.ContentEncoding = Encoding.GetEncoding("UTF-8");

Response.Charset = "UTF-8";

Я решил попробовать кодировку Windows-1250, которая (в моем случае) сработала! После попытки удалить ненужные строки оказалось, что единственная нужная мне строка:

Response.ContentEncoding = Encoding.GetEncoding("Windows-1250");

Я также рекомендую библиотеку vCard , которая мне очень помогла.

0 голосов
/ 05 апреля 2011

Вот версия, которая работает для меня.

<%@ Page Language="C#"  CodePage=1252 %>
<%
Response.Charset ="windows-1252";
Response.ContentType="text/x-vcard";
Response.AddHeader("Content-Disposition", "attachment; filename=test.vcf" );
 %>
BEGIN:VCARD
VERSION:2.1
N:;Dugré;Simon
FN:Simon Dugré
ORG:CompanyNameéàêâç
TEL;WORK;VOICE:5555555555
EMAIL;PREF;INTERNET:hello@world.com
REV:20110405T164322Z
END:VCARD

Это правильно загружается в Outlook 2003.

0 голосов
/ 04 апреля 2011

Попробуйте utf8 или utf-8 в качестве кодировки.

...