Можно / нужно ли оставить параметры свойства 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