From http://codespeak.net/pipermail/icalendar-dev/2010-April/000152.html: Lines get folded in the middle of multi-octet sequences (checked out code from svn today). Consider this case: import icalendar ical = icalendar.Calendar() ical.add('summary', u'a' + u'ą'*100) ical.as_string().decode('utf-8') ... UnicodeDecodeError: 'utf8' codec can't decode bytes in position 90-91: invalid data I have attached a diff of a simple one-line fix. As I see in the code you actually try not to split a multi-octet character but you don't recalculate the slice after finding the new end position. Could you confirm this? Submitted by Rimvydas Naktinis. =================================================================== --- src/icalendar/parser.py (revision 73587) +++ src/icalendar/parser.py (working copy) @@ -456,6 +456,7 @@ else: end -= 1 + slice = self[start:end] new_lines.append(slice) if end == l_line: # Done