Можно / нужно ли оставить параметры свойства iCal?

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

ОРГАНИЗАТОР;CN= Джон Доу, англ:mailto:jd@some.com

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

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

1 ответ

Решение

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 - - Лас-Вегас \, NV\, США

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

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

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

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

  • ЧЛЕН
  • Делегированы-ОТ
  • Делегированы-TO

С Уважением,

-Doug

Другие вопросы по тегам