fix(cli): read stdin as utf-8 on windows #18699
Open
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.
Switching to
std::io::stdin()
has the drawback of an internal buffer that cannot be disabled. #14704 introduced a test for non-buffered stdin, though I can't see why this is important or expected behavior.Alternatively we could borrow the internal
StdinRaw
implementation from the Rust standard library.Initially I included an integration test however I later removed it. On Windows, the testing framework allocates a pseudoterminal which always returns UTF-8-encoded text, causing the test to falsely pass. I'm unsure how else to test for this bug.
Fixes #18240.