Frage

Ich versuche, herauszufinden, wie neue Zeilen in der Beschreibung einer iCal-Datei so zu codieren, dass sie richtig in Outlook, Google Kalender importieren und der Apple-Kalender.

Der ursprüngliche Code I verwendet geerbte "= 0D = 0A" mit einer quoted-printable Codierung, die in Outlook, aber nicht in Google Kalender funktioniert gut.

Die Spezifikation scheint Sie zu sagen sollte „\ n“ verwenden, eine neue Zeile zu repräsentieren. Dies funktioniert gut in Google Kalender, aber Outlook legt einfach die wörtlichen "\ n" Zeichen in es.

Gibt es eine Möglichkeit Sie dies getan haben, die konsequent Kalendersysteme accross funktioniert?

War es hilfreich?

Lösung

OK, sieht aus wie ich meine eigene Frage bin zu beantworten.

Der richtige Weg, es zu tun ist „\ n“ für Zeilenumbrüche zu verwenden. Outlook hat das nicht erkennen, weil ich auf der Beschreibung „encoding = quoted-printable“ hatte. Sobald ich das entfernt wird, angezeigt Outlook die neuen Linien korrekt.

, auch die Datei zu bekommen, um richtig in Apple iCal zu öffnen, müssen Sie „VERSION: 2.0“ verwenden, um die Dateiversion. Wenn Sie „Version: 1.0“ zu verwenden., Wird es Ihnen sagen, es die Datei nicht lesen kann (auch wenn es auf die 1.0-Spezifikation entspricht)

Hinweis: Wie andere erwähnt haben, hat die Datei tatsächlich die Zeichenkette \n enthalten. Da die meisten Sprachen behandeln, die als Escape-Sequenz, die ein Newline-Zeichen bedeutet, müssen Sie wahrscheinlich die Zeichenfolge \\n in Ihrem Code verwenden.

Andere Tipps

Der Kommentar mit dem Link zu der RFC von Matthew Bucket oben in der ursprünglichen Nachricht hat mir geholfen. Zitiert von dort aus:

  

Ein umgekehrter Schrägstrich in einem „TEXT“ Eigenschaftswert MUST         mit einem weiteren umgekehrten Schrägstrich entwertet wird

Also, ich habe ein

$description = str_replace("\r\n", "\\n", $description);

und es funktioniert

Könnte sich lohnen, zu sagen, dass Sie die wörtliche \ n benötigen, das Neuzeilensymbol wahrsten Sinne des Wortes Backslash dann n im isch. Vergessen Sie auch nicht die 75 Zeichen „Falten“ zu tun.

Ihre Ausgabedatei wie unten sein sollte ---

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//2013//#Ur Site Name#//EN
BEGIN:VEVENT
UID:[event]2012
DTSTART:20130101T100000
DTEND:20130101T120000
LOCATION:
SUMMARY:#Meeting Title here#
DESCRIPTION:What is realistic for financial services companies to achieve via Social Media channels?    \n\nJoin us on 11th September 2013 at 4pm (BST) where we 
-----bla bla bla ----
END:VEVENT
END:VCALENDAR

Hier müssen Sie von Version kümmern, es 2,0 sein sollte und Escape char ... \ n (Newline), Semikolon (;) und Komma (,). Wenn Sie in .net schreiben, dann sollte es mögen ... „\\ n“, „\\“; und "\\".

Sie können Ihre Ausgabedatei auf dieser Seite überprüfen, wie gut ... http://icalvalid.cloudapp.net/

Danke, Bhaskar

Dies ist meine Antwort für DESCRIPTION

$filev = str_replace("\r\n", '\\n', $p);
$filev = str_replace("<br>",'\\n',$filev);
$filev = (str_replace(";","\;",str_replace(",",'\,',$filev)));

Nach diesem RFC :

  

Content Linien durch einen Zeilenumbruch begrenzt sind,      welches eine CRLF Sequenz (CR LF Zeichen durch Zeichen folgen).

Sie sollten also \r\n verwenden. Ich habe dies in Strings ohne zusätzliche Backslash.

Ich hatte die Ausgabe in der Zeichenfolge zu entkommen ein wörtlichen „\ n“ in der Ausgabedatei festlegen. Wie so. Arbeitete einen Reiz.

$events .= "DESCRIPTION:" . str_replace("\n","\\n",str_replace(";","\;",str_replace(",",'\,',get_event_contents()))) . "\n";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top