Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UTF-8 input on Windows #102

Open
byeongkeunahn opened this issue Jun 10, 2024 · 1 comment
Open

UTF-8 input on Windows #102

byeongkeunahn opened this issue Jun 10, 2024 · 1 comment

Comments

@byeongkeunahn
Copy link
Collaborator

Baekjoon Online Judge 11283. 한글 2 문제를 해결하려면 UTF-8 입력을 받을 수 있어야 합니다.

현재 임의의 Unicode character를 UTF-8로 출력하는 기능은 writer.char()를 통해 구현되어 있고 CI에서 테스트되고 있습니다.

하지만 UTF-8 입력을 받는 기능은 Windows에서 ReadConsoleW를 이용한 workaround가 필요하다고 하는 등 기술적으로 까다로워 구현을 미루고 있습니다. PS에서 마이너한 이슈이지만 일단 기록해봅니다.

@byeongkeunahn
Copy link
Collaborator Author

Rust의 구현 https://github.com/rust-lang/rust/blob/master/library/std/src/sys/pal/windows/stdio.rs을 참고하면, stdin이 콘솔인 경우 UTF-16으로 읽고 UTF-8로 변환하고, 콘솔이 아닌 경우 그냥 바이트 스트림을 읽어들이는 것으로 보입니다.

콘솔인지 여부는 GetConsoleMode API로 판정할 수 있다고 합니다. GetConsoleMode 반환 값이 0이 아닌 경우 stdin이 콘솔입니다. https://learn.microsoft.com/ko-kr/windows/console/getconsolemode

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant