如何在 vCard 中使用自定义字段?

问题描述 投票:0回答:2

我正在编写一个应用程序,该应用程序从内部客户数据库生成 vCard,并希望在卡中包含其他信息,例如内部客户编号。在阅读 RFC 时,我看到了“供应商特定”扩展,这些扩展将在 IANA 等处注册。这些扩展是正确的选择吗?使用时应该注意什么,有什么陷阱吗?是否有其他方法可以在 vCard 中定义自定义字段?

customization vcf-vcard
2个回答
5
投票

RFC 2426 第 4 节 指定如何创建非标准名称。如果您阅读产生式规则,您将了解定义属性的确切方式。例如,要定义客户编号,您可以在单独的行上简单地说

X-CUSTOMER-ID:123

注意事项:

  • 转义逗号、分号、冒号和换行符等字符。这在语法规则中有明确定义。
  • 哪些内容区分大小写,哪些不区分大小写。同上。
  • 生成的文件中的编码和行结尾。仅使用 UTF-8、行结尾 (Windows 风格)并在文件末尾有一个额外的空行。

0
投票

只是为了给另一个历史答案提供另一个 vCard 4.0 (RFC 6350) 附录:第 6.10 节。扩展属性和参数指定:

本文档定义的属性和参数可以是
延长。 非标准、私有属性和参数带有
以“

X-
”开头的名称可以在两个
之间双边定义 未经外部注册或标准化的合作代理商。

而且,NBF 部分的评论进一步强调:

x-name = "x-" 1*(ALPHA / DIGIT / "-")
; Names that begin with "x-" or "X-" are
; reserved for experimental use, not intended for released
; products, or for use in bilateral agreements.

尽管如此,行业实践的发展速度当然比标准化更快。有关一些已用

X-
字段的 2017 年快照,请参阅这个简单的 vcard-generator:

X-MAIDENNAME:MaidenName
X-PHONETIC-FIRST-NAME:PhoneticFirstName
X-PHONETIC-MIDDLE-NAME:PhoneticMiddleName
X-PHONETIC-LAST-NAME:PhoneticLastName
X-PRONUNCIATION-FIRST-NAME:PronunciationFirstName
X-PRONUNCIATION-MIDDLE-NAME:PronunciationMiddleName
X-PRONUNCIATION-LAST-NAME:PronunciationLastName
[...]
X-SOCIALPROFILE;PREF=1;TYPE=facebook:http://www.facebook.com/johndoe
X-SOCIALPROFILE;PREF=2;TYPE=twitter;x-user=johnie:x-apple:johnie

此存储库还有助于实现属性值转义规则 (3.4.)。粗略引用来自 src/util.js:

const encodeText = (text) => (
  text ?
  text
    .replace(/\\/g, '\\\\')
    .replace(/\r?\n/g, '\\n')
    .replace(/,/g, '\\,')
    .replace(/;/g, '\\;') :
  ''
);
© www.soinside.com 2019 - 2024. All rights reserved.