I did not encode the email field because I wanted to keep the changes to a minimum and never saw non-ASCII characters in an email address anywhere, but I realize that's very short-sighted, so feel free to amend the code.

Regarding your second point, the code will work because the % operator binds stronger than the if statement, so it's equivalent to
```python
if self.email is not None:
  return '%s <%s>' % (self.name,self.email)
else
  return self.name
```