can/should iCal property parametrs be escaped?

孤者浪人 提交于 2019-12-10 02:31:18

问题


specifically, the CN (common name) parameter, e.g.

ORGANIZER;CN=John Doe,Eng:mailto:jd@some.com

The RFC is vague on this, IMHO. It is very clear about property values of type TEXT, but for this parameter it just says "The parameter value is text". Anyways, the escaping specified for TEXT type doesn't seem complete for parameter values (e.g. ':' is not escaped).

thanks a lot!


回答1:


Davka,

Yes, parameter values can be escaped by surrounding the value in double-quotes. Parameter values must be escaped if they contain any of the following characters:

; - semicolon
: - colon
, - comma

It is illegal to have a double quote " character inside parameter values, so they should be deleted (or otherwise removed from the parameter value).

So, with your above example, the correct escaping is this:

ORGANIZER;CN="John Doe,Eng":mailto:jd@some.com

Note that once the first (unquoted) colon : is encountered, parsing engines treat the rest as the property value. It is legal to use the colon : character inside property values, so the colon in mailto:jd@some.com doesn't need to be escaped.

We can break the line into it's parts:

  • ORGANIZER - property name
  • ; - parameter delimiter
  • CN - parameter name
  • = - parameter value delimiter
  • "John Doe,Eng" - parameter value
  • : - property value delimiter
  • mailto:jd@some.com - property value

Here's a quote from RFC 5545 Section 3.2 that explains when parameter values are surrounded with double-quotes, and tells us double-quotes are illegal in parameter values:

Property parameter values that contain the COLON, SEMICOLON, or COMMA character separators MUST be specified as quoted-string text values. Property parameter values MUST NOT contain the DQUOTE character. The DQUOTE character is used as a delimiter for parameter values that contain restricted characters or URI text. For example:

DESCRIPTION;ALTREP="cid:part1.0001@example.org":The Fall'98 Wild Wizards Conference - - Las Vegas\, NV\, USA

It's important to note that parameters can technically contain multiple values. A comma is used to separate these multiple values:

(from Section 3.2.11 of RFC 5545:)

ATTENDEE;MEMBER="mailto:projectA@example.com","mailto:pr
 ojectB@example.com":mailto:janedoe@example.com

Not all iCalendar engines will accept multiple values on all parameters, but the following parameters SHOULD allow multiple values (according to the RFC):

  • MEMBER
  • DELEGATED-FROM
  • DELEGATED-TO

Regards,

-Doug



来源:https://stackoverflow.com/questions/3014137/can-should-ical-property-parametrs-be-escaped

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!