Sorry for the utterly wrong reply. Turns out I had a silly error when I tried to disable decoding. Not decoding at all solves this problem:
```python

def read_text_file(filename):
    """Return the contents of *filename*.

    Try to decode the file contents with utf-8, the preffered system encoding
    (e.g., cp1252 on some Windows machines) and latin1, in that order. Decoding
    a byte string with latin1 will never raise an error. In the worst case, the
    returned string will contain some garbage characters.

    """

    with open(filename, 'rb') as fp:
        data = fp.read()

    return data
```

Twython's and requests' files are encoded as UTF-8 without BOM.