[fix] Reading utf8 encoded source code from windows stdin will throw UnicodeEncodeError #430
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.
The old version of the fix_code function uses stdin.encoding as the default input encoding, which is not the encoding of the input file. For example, you are editing a utf8 encoded file in vim on windows, and then output the contents of the vim buffer to autopep8 through the pipeline. At this time, since the stdin.encoding on windows(gb2312 as default) is different from the encoding of the buffered content of vim, UnicodeEncodeError exception will be thrown.
The fix for this problem is that stdin is only used as a byte input pipeline. autopep8 reads the source code that needs to be formatted by stdin as bytes, and then dynamically detects the encoding format.