0

vCard 4.0 RFC 6350说属性参数值中的换行符必须编码为 \n (至少对于 ADR 属性的 LABEL 参数):

  The property can also include a "LABEL" parameter to present a
  delivery address label for the address.  Its value is a plain-text
  string representing the formatted address.  Newlines are encoded
  as \n, as they are for property values.


  ADR;GEO="geo:12.3457,78.910";LABEL="Mr. John Q. Public, Esq.\n
  Mail Drop: TNE QB\n123 Main Street\nAny Town, CA  91921-1234\n
  U.S.A.":;;123 Main Street;Any Town;CA;91921-1234;U.S.A.

但是 vCard 4.0 RFC 6350 由'Parameter Value Encoding in iCalendar and vCard' RFC 6868更新,其中说:

  formatted text line breaks are encoded into ^n (U+005E, U+006E)

  GEO;X-ADDRESS="Pittsburgh Pirates^n115 Federal St^nPitt
  sburgh, PA 15212":geo:40.446816,-80.00566
  being used

如何将 vCard 4.0 参数值中的换行符编码为 \n 或 ^n?

4

1 回答 1

0

看看实际的语法:

param-value = *SAFE-CHAR / DQUOTE *QSAFE-CHAR DQUOTE

vCard/iCalendar(不幸的是)不支持属性属性值中的通用转义。如 RFC 6868 中所述:

用于属性文本值的 \-转义机制未定义为与参数值一起使用

(这是 RFC 6868 的重点)。

LABEL 是特殊的并且明确指定支持\n:

该属性还可以包括“标签”参数,以显示地址的交货地址标签。它的值是一个表示格式化地址的纯文本字符串。换行符编码为 \n,因为它们用于属性值。

这仅适用于 LABEL。

要回答您的问题:“如何将 vCard 4.0 参数值中的换行符编码为 \n 或 ^n?”

您首先查看参数的值是否以特殊方式指定,例如 LABEL。如果是这样,请按照对参数的描述对其进行编码。如果不是,请通过 ^ 对其进行编码。

于 2014-02-27T16:36:24.883 回答