MS“VCard”法国特色字符

Posted

技术标签:

【中文标题】MS“VCard”法国特色字符【英文标题】:MS "VCard" french specials chars 【发布时间】:2011-07-29 04:38:38 【问题描述】:

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

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

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

有什么建议吗?

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

开始:VCARD 版本:2.1 N;LANGUAGE=fr-ca;CHARSET=UTF-8:Dugré;Simon ORG;CHARSET=utf-8:CompanyNameéàêâç 电话;工作;语音:5555555555 X-MS-OL-DEFAULT-POSTAL-ADDRESS:0 EMAIL;PREF;INTERNET:hello@world.com X-MS-OL-DESIGN;CHARSET=utf-8:[VCard html 格式] 修订:20110404T135700 结束:VCARD

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

这正是帮助我的原因。我还要添加:;CHARSET=utf-8 必须添加到可以包含重音符号的每一行中。 你拯救了我的一天。前景很有趣【参考方案2】:

这是行:

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";

【讨论】:

关于这个的问题;可以设置“默认”吗?因为,在这种情况下,默认是服务器的默认值。当这个人在他的电脑上打开它时,是否与用户有任何可能的“冲突”? 您应该检查您机器上的默认设置。如果默认更改,它可能会破坏你。 谢谢达里尔。我改变了答案。 这适用于拉丁语 1,但它与 UTF-8 不兼容...除非您的答案是在第一个代码块中将“UTF-8”作为字符集和“ISO- 8859-1" 在第二块?【参考方案3】:

尝试使用utf8utf-8 作为字符集。

【讨论】:

不工作......还是一样。但是当我查看源代码时,它显示为“É”而不是 É... 真的很奇怪 UFT8、UFT7、ISO-8859-1 或 Windows-1252 还包括 É 或 È 等。但在这种情况下,由于未知原因,这些似乎都不起作用... 当您在网络服务器上对文本进行编码时,您是否将其作为 utf-8 发送出去? 这是我的行... content.AppendLine(string.Format("N;LANGUAGE=fr-ca;CHARSET=ISO-8859-1:0;1", this.姓,this.FirstName));但是,为什么 VCard 源仍然显示为“É”而不是“é”。为什么用 Outlook 创建的,在源代码中显示为“É”,而在 Outlook 中查看时显示为“É”? é 是 utf8。时期。这意味着文件保存为 utf8,因此您需要采取相应措施,或重新编码文件(例如使用标准记事本),可能在 iso8859-1 或 15 中。【参考方案4】:

这是一个适合我的版本。

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

【讨论】:

我已经尝试按照您所说的做同样的事情,但它不起作用......但我刚刚看到“这会正确加载到 Outlook 2003 中”。可能是因为我使用的是 Outlook 2007 吗? 您是否尝试按原样将代码作为 aspx 页面放在您的网络服务器上?如果不试一试,看看会发生什么。我要做的另一件事是在 Outlook 2007 中创建联系人并将其保存为 vcard 以查看输出的样子。 谢谢达里尔。但也试过了!它是相同的,完全相同的 VCard 的“来源”。除了 Notepad++ 之外,编码似乎与@Alexander C 所说的不同(抱歉)。它以 UTF-8 格式打开。我会尝试另一种方式来输出我的页面响应,我会回来的。再次感谢【参考方案5】:

我也遇到了特殊字符(波兰语)的问题。我不确定 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 库,它对我帮助很大。

【讨论】:

以上是关于MS“VCard”法国特色字符的主要内容,如果未能解决你的问题,请参考以下文章

sql 从日期和频率字符串评估下一个法国工作日

法国里昂商学院大数据决策与商业智能研究所所长龚业明教授来访我院

谁能告诉我法国朗格勒(langres)的概况?

法国和意大利的小城镇都有哪些????

法国红酒aop是啥等级

法国葡萄酒等级AOP是什么意思?