Encoding 如何在vCard 4.0参数值中编码换行符:^n或\n?

Encoding 如何在vCard 4.0参数值中编码换行符:^n或\n?,encoding,escaping,newline,vcf-vcard,carddav,Encoding,Escaping,Newline,Vcf Vcard,Carddav,说明属性参数值中的换行必须编码为\n(至少对于ADR属性的标签参数): 但是,vCard 4.0 RFC 6350由更新,其中说明: 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

说明属性参数值中的换行必须编码为\n(至少对于ADR属性的标签参数):

但是,vCard 4.0 RFC 6350由更新,其中说明:

  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?

查看实际语法:

param-value = *SAFE-CHAR / DQUOTE *QSAFE-CHAR DQUOTE
vCard/iCalendar(很遗憾)不支持属性值中的泛型转义。如RFC 6868所述:

未定义用于属性文本值的转义机制 用于参数值

(这是RFC 6868的全部要点)

标签是特殊的,并明确指定支持\n:

该属性还可以包含一个“LABEL”参数来表示 地址的递送地址标签。它的值是纯文本 表示格式化地址的字符串。换行符编码为 \n、 与属性值相同

这只是为了标签

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

首先查看参数的值是否以特殊方式指定,如标签。如果是,请按照参数所述对其进行编码。如果不是,则通过^对其进行编码

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