Author Matt.Mackall
Recipients David.Sankel, Matt.Mackall, amaury.forgeotdarc, brian.curtin, christian.heimes, christoph, davidsarah, ezio.melotti, hippietrail, lemburg, mark, mhammond, pitrou, santoso.wijaya, smerlin, ssbarnea, terry.reedy, tim.golden, tzot, v+python, vstinner
Date 2011-12-07.21:18:22
SpamBayes Score 9.13147e-11
Marked as misclassified No
Message-id <>
The underlying cause of Python's write exceptions with cp65001 is:

The ANSI C write() function as implemented by the Windows console returns the number of _characters_ written rather than the number of _bytes_, which Python reasonably interprets as a "short write error". It then consults errno, which gives the effectively random error message seen.

This can be bypassed by using os.write(sys.stdout.fileno(), utf8str), which will a) succeed and b) return a count <= len(utf8str).

With os.write() and an appropriate font, the Windows console will correctly display a large number of characters.

Possible workaround: clear errno before calling write, check for non-zero errno after. The vast majority of (non-Python) applications never check the return value of write, so don't encounter this problem.
Date User Action Args
2011-12-07 21:18:23Matt.Mackallsetrecipients: + Matt.Mackall, lemburg, mhammond, terry.reedy, tzot, amaury.forgeotdarc, pitrou, vstinner, christian.heimes, tim.golden, mark, christoph, ezio.melotti, v+python, hippietrail, ssbarnea, brian.curtin, davidsarah, santoso.wijaya, David.Sankel, smerlin
2011-12-07 21:18:23Matt.Mackallsetmessageid: <>
2011-12-07 21:18:22Matt.Mackalllinkissue1602 messages
2011-12-07 21:18:22Matt.Mackallcreate