Как мне избежать новой строки в значениях vCard 4.0?
Я вижу некоторые несоответствия в правилах выхода новой строки vCard 4.0 RFC 6350. Раздел 3.4 говорит:
Символы NEWLINE (U+000A) в значениях ДОЛЖНЫ быть закодированы двумя символами: BACKSLASH, за которым следует 'n' (U+006E) или 'N' (U+004E).
Я предполагаю, что должен заменить не только символ LF (U+000A), но и последовательность CRLF. Вот как это было в vCard 3.0 RFC 2426 и чем отличается от vCard 2.1.
Должен ли я заменить последовательность CRLF или только символ LF в соответствии со спецификацией vCard 4.0?
2 ответа
В vCard 4.0 escape-последовательность новой строки \n
, Если локальная операционная система использует CRLF в качестве последовательности новой строки, символы CR и LF оба заменяются одним \n
,
При разборе vCard \n
должен быть заменен любой последовательностью новой строки локальной операционной системы.
Это относится только к последовательностям ESCAPE! То есть, когда вы хотите поместить новые строки в значения свойств, вы должны написать "\n". Когда дело доходит до разрывов строк в самом коде vcard, RFC заявляет, что вы должны использовать CRLF (0x0D0A), поэтому вам не следует заменять любые "настоящие" символы разрывов строк в файле vcard.