Windows의 UTF-8 출력: 종합 가이드
Windows는 UTF-8로 인코딩된 문자열. 8비트 문자열을 UTF-8로 자동 해석하는 Unix 시스템과 달리 Windows에서는 동일한 작업을 수행하기 위해 특정 구성이 필요합니다.
다음 코드를 고려하세요.
<code class="cpp">#include <string> #include <iostream> int main() { std::string test = u8"Greek: αβγδ; German: Übergrößenträger"; std::cout << test; return 0; }</code>
Unix 시스템에서는 이 코드는 원하는 문자를 올바르게 렌더링합니다. 그러나 Windows에서는 std::cout의 기본 기대 사항인 Latin-1 또는 이와 유사한 유니코드가 아닌 형식의 8비트 문자열로 인해 잘못된 텍스트가 표시됩니다.
이 문제를 해결하려면 Windows에 두 가지 구성 단계가 필요합니다. :
1. 콘솔 코드 페이지를 UTF-8로 설정
이것은 콘솔이 UTF-8로 수신하는 바이트 스트림을 해석하도록 알립니다:
<code class="cpp">SetConsoleOutputCP(CP_UTF8);</code>
2. std::cout에서 버퍼링 활성화
std::basic_filebuf의 Visual Studio STL 구현은 UTF-8 시퀀스를 개별 바이트로 전달하여 잘못된 콘솔 해석을 초래할 수 있습니다. 버퍼링을 활성화하면 문자열 전체가 전달됩니다.
<code class="cpp">setvbuf(stdout, nullptr, _IOFBF, 1000);</code>
이러한 구성을 사용하면 UTF-8 문자열이 Windows 콘솔에 정확하게 표시됩니다. 그러나 Windows 콘솔에는 여전히 레거시 문제가 있다는 점에 유의하는 것이 중요합니다.
작성자 코드와 컨텍스트를 모두 통합한 이 수정된 답변은 Windows에서 UTF-8 문자열을 인쇄하기 위한 포괄적인 단계별 솔루션을 제공하여 역사적 고려 사항과 현대적 고려 사항을 모두 해결합니다.
위 내용은 Windows 콘솔에서 UTF-8 문자열을 올바르게 표시하는 방법: 종합 가이드?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!