Use FS encoding and errors for unicode args #1499
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This partially reverts 85069b5 but should have the same effect.
Scope and purpose
The error reported Twisted #10070:
This points at this code:
twisted/src/twisted/internet/base.py
Lines 1055 to 1074 in c806407
It looks like
defaultEncodingused to default tosys.getfilesystemencoding(): 85069b5 It's also documented to be possible forstd.stdoutto beNoneon Windows so usingsys.stdout.encodingseems broken in the general case.It seems like just the environment variables added for #9858 should be sufficient to solve the problem there, as they activate UTF-8 mode on all supported Python versions. However it also looks off to me that we aren't using the system-configured encoding error handler (via the sublimely named
os.getfilesystemencodeerrors()). That's what should allow non-text stuff to round-tripI have no idea how to add tests for this, but I think that the additional coverage added in PR #1302 may be sufficient.
Contributor Checklist:
tox -e lintto format my patch to meet the Twisted Coding Standardreviewto the keywords field in Trac, and putting a link to this PR in the comment; it shows up in https://twisted.reviews/ now.