I believe this could cause breakage (though it seems safe in this function).
```
>>> str('é')
'\xc3\xa9'
>>> str('é'.encode('utf-8'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)
>>> str(u'é'.encode('utf-8'))
'\xc3\xa9'
>>> str(u'é')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)
```
By removing the calls to `.encode`, these strings stay unicode and the returned repr will be upgraded to unicode.

```
>>> '<%s>' % ' '.join([u'☃'.encode('utf-8'), u'é'.encode('utf-8')])
'<\xe2\x98\x83 \xc3\xa9>'
>>> '<%s>' % ' '.join([u'☃', u'é'])
u'<\u2603 \xe9>'
```