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】:尝试使用utf8
或utf-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”法国特色字符的主要内容,如果未能解决你的问题,请参考以下文章