是否可以/应该逃避iCal属性参数? [英] can/should iCal property parametrs be escaped?

查看:113
本文介绍了是否可以/应该逃避iCal属性参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

具体来说,CN(通用名称)参数,例如

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

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

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

对此,RFC含糊不清,恕我直言.关于类型 TEXT的属性值非常清楚,但是对于此参数,它仅显示"参数值是文本".无论如何,为TEXT类型指定的转义对于参数值似乎并不完整(例如,':'不能转义).

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).

非常感谢!

推荐答案

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

请注意,一旦遇到第一个(不带引号的)冒号:,解析引擎会将其余的视为属性值.在属性值中使用冒号:字符是合法的,因此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-属性名称
  • ;-参数分隔符
  • CN-参数名称
  • =-参数值定界符
  • "John Doe,Eng"-参数值
  • :-属性值定界符
  • mailto:jd@some.com-属性值
  • 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

这是RFC 5545第3.2节中的引号,解释了何时参数值用双引号引起来,并告诉我们双引号在参数值中是非法的:

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:

包含的属性参数值 COLON,SEMICOLON或COMMA 必须指定字符分隔符 作为带引号的字符串文本值.财产 参数值不得包含 DQUOTE字符. DQUOTE 字符用作分隔符 包含的参数值 受限制的字符或URI文本. 例如:

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": Fall'98狂野巫师会议-- 美国内华达州拉斯维加斯\

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:

(摘自RFC 5545第3.2.11节:)

(from Section 3.2.11 of RFC 5545:)

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

不是所有的iCalendar引擎都会在所有参数上接受多个值,但是以下参数应允许多个值(根据RFC):

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

  • 会员
  • 删除从
  • 删除至

此致

-道格

这篇关于是否可以/应该逃避iCal属性参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆