можно / нужно ли экранировать параметры свойства iCal? - PullRequest
10 голосов
/ 10 июня 2010

, в частности, параметр CN (общее имя), например

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

RFCрасплывчато, ИМХО.Это очень ясно о значениях свойств из типа TEXT, но для этого параметра он просто говорит " Значение параметра - текст ".В любом случае, экранирование, заданное для типа TEXT, не кажется полным для значений параметров (например, ':' не экранировано).

большое спасибо!

1 Ответ

17 голосов
/ 11 августа 2010

Davka,

Да, значения параметров можно экранировать, заключив их в двойные кавычки.Значения параметров должны быть экранированы, если они содержат любой из следующих символов:

; - semicolon
: - colon
, - comma

Недопустимо использовать двойные кавычки " внутри значений параметров, поэтому их следует удалить (или удалить иззначение параметра).

Итак, в приведенном выше примере правильное экранирование выглядит следующим образом:

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

Обратите внимание, что при обнаружении первого (без кавычек) двоеточия : механизмы синтаксического анализа обрабатываютостальное как значение свойства .Допустимо использовать символ двоеточия : внутри значений свойств, поэтому не нужно экранировать двоеточие в mailto:jd@some.com.

Мы можем разбить строку на части:

  • ORGANIZER - имя свойства
  • ; - разделитель параметров
  • CN - имя параметра
  • = - разделитель значений параметров
  • "John Doe,Eng" - значение параметра
  • : - разделитель значения свойства
  • mailto:jd@some.com - значение свойства

Вот цитата из RFC 5545 Раздел3.2, который объясняет, когда значения параметров заключены в двойные кавычки, и говорит нам, что двойные кавычки недопустимы в значениях параметров:

Значения параметров свойств, которые содержат символьные разделители COLON, SEMICOLON или COMMA, ДОЛЖНЫ бытьуказано как текстовые значения в кавычках.Значения параметров свойства НЕ ДОЛЖНЫ содержать символ DQUOTE.Символ DQUOTE используется в качестве разделителя для значений параметров, которые содержат запрещенные символы или текст URI.Например:

ОПИСАНИЕ; ALTREP = "cid: part1.0001@example.org": Конференция Wild Wizards осени'98 - - Лас-Вегас \, Невада \, США

Важно отметить, что параметры технически могут содержать несколько значений.Запятая используется для разделения этих нескольких значений:

(из Раздела 3.2.11 RFC 5545:)

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

Не все механизмы iCalendar будут принимать несколько значений для всех параметров, ноСледующие параметры ДОЛЖНЫ разрешать множественные значения (в соответствии с RFC):

  • MEMBER
  • DELEGATED-FROM
  • DELEGATED-TO

С уважением,

-Doug

...