@@ -368,9 +368,14 @@ def _serialize(self, stream):
368368 write ("parent %s\n " % p )
369369
370370 a = self .author
371+ aname = a .name
372+ if isinstance (aname , unicode ):
373+ aname = aname .encode (self .encoding )
374+ # END handle unicode in name
375+
371376 c = self .committer
372377 fmt = "%s %s <%s> %s %s\n "
373- write (fmt % ("author" , a . name , a .email ,
378+ write (fmt % ("author" , aname , a .email ,
374379 self .authored_date ,
375380 altz_to_utctz_str (self .author_tz_offset )))
376381
@@ -425,12 +430,19 @@ def _deserialize(self, stream):
425430 readline ()
426431 # END handle encoding
427432
433+ # decode the authors name
434+ try :
435+ self .author .name = self .author .name .decode (self .encoding )
436+ except UnicodeDecodeError :
437+ print >> sys .stderr , "Failed to decode author name: %s" % self .author .name
438+ # END handle author's encoding
439+
428440 # a stream from our data simply gives us the plain message
429441 # The end of our message stream is marked with a newline that we strip
430442 self .message = stream .read ()
431443 try :
432444 self .message = self .message .decode (self .encoding )
433- except Exception :
445+ except UnicodeDecodeError :
434446 print >> sys .stderr , "Failed to decode message: %s" % self .message
435447 # END exception handling
436448 return self
0 commit comments