I am not arguing about the output of `io.read` that our application compares against. I am arguing that we should not interfere with `io.read's` defaults with our own opinion of defaults. 

It seems we are both arguing for consistency. My viewpoint is about consistency with Python's defaults. I don't care if it is different between Python 2 and 3, any developer working with 3 is aware of the discrepancies.

Can you elaborate on where bytes are coming from? I don't see them in a Python 2 or 3 shell.

```python
# Python 2
>>> f = io.open('test/test_files/utf8.rst')
>>> f.read()
u'Hello\n=====\nWorld\n\xf6\u250c\u3067\xdf\xbd\u1e45\n'
>>> f = io.open('test/test_files/utf8.rst', encoding=None)
>>> f.read()
u'Hello\n=====\nWorld\n\xf6\u250c\u3067\xdf\xbd\u1e45\n'
>>> f = io.open('test/test_files/utf8.rst', encoding='utf8')
>>> f.read()
u'Hello\n=====\nWorld\n\xf6\u250c\u3067\xdf\xbd\u1e45\n'

# Python 3
>>> f = io.open('test/test_files/utf8.rst')
>>> f.read()
'Hello\n=====\nWorld\nö┌でß½ṅ\n'
>>> f = io.open('test/test_files/utf8.rst', encoding=None)
>>> f.read()
'Hello\n=====\nWorld\nö┌でß½ṅ\n'
>>> f = io.open('test/test_files/utf8.rst', encoding='utf8')
>>> f.read()
'Hello\n=====\nWorld\nö┌でß½ṅ\n'
```