iCal 属性参数可以/应该转义吗?
具体来说,CN(通用名称)参数,例如
ORGANIZER;CN=John Doe,Eng:mailto:[电子邮件受保护]
ORGANIZER 恕我直言,RFC 对此含糊其辞。 类型 TEXT 的属性值非常清楚,但对于此参数,它只是说“参数值为文本”。无论如何,为 TEXT 类型指定的转义对于参数值来说似乎并不完整(例如“:”没有转义)。
多谢!
specifically, the CN (common name) parameter, e.g.
ORGANIZER;CN=John Doe,Eng:mailto:[email protected]
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!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Davka,
是的,可以通过用双引号将值引起来转义参数值。如果参数值包含以下任何字符,则必须对其进行转义:
参数值内包含双引号
"
字符是非法的,因此应将其删除(或以其他方式从参数值中删除)。因此,对于上面的示例,正确的转义是这样的:
请注意,一旦遇到第一个(未加引号的)冒号
:
,解析引擎会将其余部分视为属性值。在属性值中使用冒号:
字符是合法的,因此在mailto:[email protected]
不需要转义。我们可以将该行分成几个部分:
ORGANIZER
- 属性名称CN
- 参数名称=
- 参数值分隔符"John Doe,Eng"
- 参数值mailto:[电子邮件受保护]
- 属性值这里引用 RFC 5545 第 3.2 节,解释参数值何时用双引号引起来,并告诉我们双引号在参数值中是非法的:
需要注意的是,参数在技术上可以包含多个值。使用逗号来分隔这些多个值:(
来自 RFC 5545 的第 3.2.11 节:)
并非所有 iCalendar 引擎都接受所有参数的多个值,但以下参数应该允许多个值(根据 RFC):
问候,
-道格
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:
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:
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 inmailto:[email protected]
doesn't need to be escaped.We can break the line into it's parts:
ORGANIZER
- property name;
- parameter delimiterCN
- parameter name=
- parameter value delimiter"John Doe,Eng"
- parameter value:
- property value delimitermailto:[email protected]
- property valueHere'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:
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:)
Not all iCalendar engines will accept multiple values on all parameters, but the following parameters SHOULD allow multiple values (according to the RFC):
Regards,
-Doug