>  기사  >  백엔드 개발  >  Windows 콘솔에서 UTF-8 문자열을 올바르게 표시하는 방법: 종합 가이드?

Windows 콘솔에서 UTF-8 문자열을 올바르게 표시하는 방법: 종합 가이드?

Susan Sarandon
Susan Sarandon원래의
2024-10-29 18:41:03341검색

How to Display UTF-8 Strings Correctly on Windows Console: A Comprehensive Guide?

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 콘솔에는 여전히 레거시 문제가 있다는 점에 유의하는 것이 중요합니다.

  • 래스터 글꼴: 이러한 글꼴은 콘솔의 코드 페이지를 무시하므로 비ASCII에 대해 TrueType 글꼴을 사용해야 합니다. 유니코드 문자.
  • Windows 7 기본 글꼴: Windows 10까지 기본 글꼴은 래스터 글꼴이었으며 TrueType 글꼴을 수동으로 구성해야 했습니다.

작성자 코드와 컨텍스트를 모두 통합한 이 수정된 답변은 Windows에서 UTF-8 문자열을 인쇄하기 위한 포괄적인 단계별 솔루션을 제공하여 역사적 고려 사항과 현대적 고려 사항을 모두 해결합니다.

위 내용은 Windows 콘솔에서 UTF-8 문자열을 올바르게 표시하는 방법: 종합 가이드?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.