vCard 2.1 名称属性的组件中是否可以包含逗号



我需要解析 vCard 2.1 Name 属性。

在 vCard 3.0 和 4.0 中,Name 属性的每个组件都可以有多个值。例如,RFC 2426 明确指出:

单个文本 组件可以包含多个文本值(例如,多个 其他名称),由逗号字符(ASCII 十进制)分隔 (第44页)。

但是在vCard 2.1中,看起来每个组件只能有一个值。即使可能至少其他名称(第三个字段)中可以包含逗号。

vCard 2.1 名称属性是否可以在姓氏、名字、其他名称、名称前缀和名称后缀字符串中包含逗号?这是否应该像 vCard 3.0 和 4.0 中那样被视为"多个文本值"?

根据 2.1 规范中的正式 BNF 定义,不支持组件中以逗号分隔的值列表。 BNF 没有提到必须转义逗号字符。

nameparts   = 0*4(strnosemi ";") strnosemi
; Family, Given, Middle, Prefix, Suffix.
; Example:Public;John;Q.;Reverend Dr.;III, Esq.
strnosemi   = *(*nonsemi (";" / "" CRLF)) *nonsemi
; To include a semicolon in this string, it must be escaped
; with a "" character.
N

属性的示例之一似乎也暗示逗号没有特殊含义。

N:Veni, Vidi, Vici;The Restaurant.

因此,看起来 N 属性不支持 vCard 2.1 中的多个值。

最新更新