试图用cal4j解析ical文件时,描述属性后出现换行问题



im试图在此处解析ical:http://www.dsek.se/kalender/ical.php?person=&dsek&第tl次

使用此代码:

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

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

但我遇到了问题,我认为不知何故,"描述:文本"变成了"描述:newLine文本",因此我认为解析器无法工作。

问题只出现在描述:后面有空白的行上,看起来像"描述:文本"的行可以正常工作。我还测试了另一个没有这些换行符的文件,该文件运行良好。

所以我猜测这可能是某种字符编码问题?URL对象更改了文件的编码?文件上的字符编码是ISO-8859-15

还是只是他们在"描述:"之后用换行符编写了文件?如果是这种情况,我该如何解决?:S

如果它在某种程度上很重要,该应用程序正在android上运行:)

问题是DESCRIPTION字段没有按照正确的行折叠。看见https://www.rfc-editor.org/rfc/rfc5545#section-3.1

所以无论你在哪里有这样的东西

DESCRIPTION:
some text

你应该改为

DESCRIPTION:
 some text

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

DESCRIPTION:some text

你也许可以用一个简单的Regex来解决这个问题。

然后,对于那些长度大于75个字符的描述,文件也缺少行折叠。iCal4j应该可以接受。

最后,关于字符编码,UTF-8是默认的(其他编码实际上不推荐使用https://www.rfc-editor.org/rfc/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文件的作者自己解决这些问题(换行内容编码)。

相关内容

  • 没有找到相关文章

最新更新