The problem seems to be that using output_encoding in python2 is broken due to the use of io.TextIOWrapper, which does not like to get a file object, which is exactly what python2sys.stdout is.
This problem is not displayed in python3 due to the fact of sys.stdout being a io.TextIOWrapper instance.
This behaviour starts at revision ff285f7 which introduces the buffer wrapping for the output_encoding parameter.
The proposed solution is to manually create a writable io.FileIO instance from the stdout file descriptor.
This works for both python2 and python3.
OK this is merged but I had to modify the approach considerably, as nose uses StringIO which has more difficult wrapping needs than sys.stdout. Also the FileIO wrapper was closing the stream as it needed closefd=False, but the new approach just replaces all that anyway. thanks for the help!