0

vCard 4.0 RFC 6350によると、プロパティ パラメータ値の改行は \n としてエンコードする必要があります (少なくとも ADR プロパティの LABEL パラメータの場合)。

  The property can also include a "LABEL" parameter to present a
  delivery address label for the address.  Its value is a plain-text
  string representing the formatted address.  Newlines are encoded
  as \n, as they are for property values.


  ADR;GEO="geo:12.3457,78.910";LABEL="Mr. John Q. Public, Esq.\n
  Mail Drop: TNE QB\n123 Main Street\nAny Town, CA  91921-1234\n
  U.S.A.":;;123 Main Street;Any Town;CA;91921-1234;U.S.A.

ただし、vCard 4.0 RFC 6350 は、「iCalendar および vCard のパラメータ値エンコーディング」RFC 6868によって更新され、次のように述べられています。

  formatted text line breaks are encoded into ^n (U+005E, U+006E)

  GEO;X-ADDRESS="Pittsburgh Pirates^n115 Federal St^nPitt
  sburgh, PA 15212":geo:40.446816,-80.00566
  being used

vCard 4.0 パラメータ値の改行を \n または ^n としてエンコードするにはどうすればよいですか?

4

1 に答える 1

0

実際の文法を見てください。

param-value = *SAFE-CHAR / DQUOTE *QSAFE-CHAR DQUOTE

vCard/iCalendar は (残念ながら) プロパティ属性値の一般的なエスケープをサポートしていません。RFC 6868 で言及されているように:

プロパティ テキスト値に使用される \-エスケープ メカニズムは、パラメータ値で使用するために定義されていません

(これが RFC 6868 の要点です)。

LABEL は特別であり、サポートするように明示的に指定されています \n:

プロパティには、住所の配送先住所ラベルを表示する「LABEL」パラメーターを含めることもできます。その値は、書式設定されたアドレスを表すプレーンテキスト文字列です。改行は、プロパティ値の場合と同様に \n としてエンコードされます。

LABEL専用です。

あなたの質問に答えるには: 「vCard 4.0 パラメータ値の改行を \n または ^n としてエンコードするにはどうすればよいですか?」

まず、パラメーターの値が LABEL のように特別な方法で指定されているかどうかを調べます。その場合は、パラメーターの説明に従ってエンコードします。そうでない場合は、^ でエンコードします。

于 2014-02-27T16:36:24.883 に答える