5

我正在尝试为网站动态创建 VCard。我只需打开一个“真正的”VCard,使用 Outlook 和 Notepad++ 创建一次,然后看到我需要在其中创建一个即时创建一个。一切正常,我可以在我需要的地方添加我需要的任何东西。取而代之的是一点:

  • 所有法语字符,如 É、À、Ê、Ç 等,都显示为:Simon Dugr é

我已经添加了 Outlook 建议的所有内容,创建了一个建议在我的字符串条目前添加:“CHARSET=Windows-1252:”(也尝试了 ISO-8859-1、UTF8、UTF7、UTF-8、UTF-7 ) 并且这些都不起作用。

有什么建议吗?

编辑(在 Alexandre C. 的回答之后)
这是 VCard 来源。请注意,源正确显示它,但是当我用 Outlook 打开它时,我仍然有重音问题

BEGIN:VCARD 版本:2.1
N;LANGUAGE=fr-ca;CHARSET=UTF-8:Dugré;Simon
ORG;CHARSET=utf-8:CompanyNameéàêâç
TEL;WORK;VOICE:5555555555
X-MS-OL-DEFAULT-POSTAL-ADDRESS :0
EMAIL;PREF;INTERNET:hello@world.com
X-MS-OL-DESIGN;CHARSET=utf-8:[VCard HTML 格式]
REV:20110404T135700
END:VCARD

4

5 回答 5

6

你应该写CHARSET=utf-8而不是CHARSET=UTF-8

vCard规范建议字符集应该与大小写无关,但 Outlook 不在乎。

于 2012-10-04T10:40:08.900 回答
1

这是线:

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";
于 2011-04-05T17:51:34.880 回答
0

尝试utf8utf-8作为字符集。

于 2011-04-04T13:49:53.000 回答
0

这是一个适合我的版本。

<%@ 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 中。

于 2011-04-05T17:09:31.243 回答
0

我也遇到了特殊字符(波兰语)的问题。我不确定 Outlook 中的 utf-8 编码是否存在问题或其他问题。在使用 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库。

于 2014-01-31T11:27:40.267 回答