代码之家  ›  专栏  ›  技术社区  ›  Wilfred Springer

ICAL4J和Newlines

  •  6
  • Wilfred Springer  · 技术社区  · 14 年前

    我正在阅读日历源 http://meetup.com/ 但似乎ical4j无法处理x-original-url属性中的换行符:它在此行失败:

    X-ORIGINAL-URL:http://www.meetup.com/chicagoscala/calendar/ical/The+Chicago
     -Area+Scala+Enthusiasts+(CASE)+Meetup+Group/
    

    除此之外:

    net.fortuna.ical4j.data.ParserException: Error at line 7: Illegal property [ -AREA+SCALA+ENTHUSIASTS+(CASE)+MEETUP+GROUP/]
        at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:133)
        at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:174)
        at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:155)
    

    我为它提交了一个bug,但还没有得到任何响应。这是已知问题吗?

    顺便说一句,这是该文件的hexdump片段:

    00000060  4e 0a 58 2d 4f 52 49 47  49 4e 41 4c 2d 55 52 4c  |N.X-ORIGINAL-URL|
    00000070  3a 68 74 74 70 3a 2f 2f  77 77 77 2e 6d 65 65 74  |:http://www.meet|
    00000080  75 70 2e 63 6f 6d 2f 63  68 69 63 61 67 6f 73 63  |up.com/chicagosc|
    00000090  61 6c 61 2f 63 61 6c 65  6e 64 61 72 2f 69 63 61  |ala/calendar/ica|
    000000a0  6c 2f 54 68 65 2b 43 68  69 63 61 67 6f 0a 20 2d  |l/The+Chicago. -|
    000000b0  41 72 65 61 2b 53 63 61  6c 61 2b 45 6e 74 68 75  |Area+Scala+Enthu|
    000000c0  73 69 61 73 74 73 2b 28  43 41 53 45 29 2b 4d 65  |siasts+(CASE)+Me|
    
    1 回复  |  直到 14 年前
        1
  •  5
  •   Wilfred Springer    14 年前

    好吧,你自己把一个展开的读卡器传进来,就好像是在耍花招。如果将缓冲区大小设置得足够大,它将能够正确地还原值。奇怪。

    reader = new UnfoldingReader(new InputStreamReader(uri.toURL().openStream()), 3000);
    return new CalendarBuilder().build(reader);
    

    我还将ical4j.properties设置为:

    ical4j.unfolding.relaxed=true
    

    不确定这是否会产生巨大的影响,但至少它是有效的。

    推荐文章