繁体   English   中英

在描述属性后尝试用换行符解析带有ical4j问题的ical文件

[英]Trying to parse ical file with ical4j problems with newlines after description property

我正在尝试在此处解析文档: http ://www.dsek.se/kalender/ical.php?person=&dsek&tlth

使用此代码:

URL url=new URL("http://www.dsek.se/kalender/ical.php?person=&dsek&tlth");
calendar=Calendars.load(url);

好吧,这基本上是日历代码的要旨。

但是在遇到问题时,我认为在解析之前,“ DEDSCRIPTION:文本”会以某种方式转换为“ DESCRIPTION:newLine text”,因此解析器将无法工作。

该问题仅出现在Description:后有空格的行上,看起来像“ DESCRIPTION:text”的行可以正常工作。 我还测试了另一个没有这些换行符的文件,并且该文件运行良好。

因此,我猜测这可能是某种字符编码问题? URL对象会更改文件的编码? 文件上的字符编码为ISO-8859-15

还是仅仅是他们在“ DESCRIPTION:”之后用换行符写了文件? 如果是这种情况,我该如何解决呢? :S

如果它以某种方式重要,则该应用程序在android上运行:)

问题在于,DESCRIPTION字段未遵循正确的行折叠。 参见http://tools.ietf.org/html/rfc5545#section-3.1

所以无论你在哪里

DESCRIPTION:
some text

你应该有

DESCRIPTION:
 some text

(请注意换行符之后和文本之前的空格)或简单地

DESCRIPTION:some text

您可能可以使用简单的Regex来解决此问题。

然后,对于长度超过75个字符的那些Description,文件也缺少行折叠。 iCal4j应该可以了。

最后,关于字符编码,默认为UTF-8(实际上已弃用其他编码。请参见http://tools.ietf.org/html/rfc5545#section-6 ),因此Calendars.load()方法仅假设使用UTF -8。

因此,您将不得不

Reader r = new InputStreamReader(url.openStream(), "ISO-8859-15");
CalendarBuilder builder = new CalendarBuilder();
Calendar calendar = builder.build(r);

当然,最好的解决方案是让这些ics文件的作者解决这些问题(行折叠内容编码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM