Windows 콘솔에서 적절한 UTF-8 문자 인쇄
이 문서는 Windows 콘솔에서 UTF-8 문자를 인쇄하려고 할 때 직면하는 문제를 해결하는 것을 목표로 합니다. Windows 콘솔.
문제 설명
사용자가 특정 코드 조각을 사용하여 독일어 문자를 표시하는 데 어려움을 겪었습니다.
#include
#include
int main() {
SetConsoleOutputCP(CP_UTF8);
// German characters not appearing
char const* text = "aäbcdefghijklmnoöpqrsßtuüvwxyz";
int len = MultiByteToWideChar(CP_UTF8, 0, text, -1, 0, 0);
wchar_t *unicode_text = new wchar_t[len];
MultiByteToWideChar(CP_UTF8, 0, text, -1, unicode_text, len);
wprintf(L"%s", unicode_text);
}
출력 코드 페이지를 UTF-8로 설정했음에도 불구하고 독일어 문자가 올바르게 인쇄되지 않습니다.
해결책
Windows 콘솔에는 여러 가지 사용 가능한 방법이 있습니다:
문제 해결
세 번째 방법으로 잘못된 출력의 경우:
putc('\302'); putc('\260'); // doesn't work with CP_UTF8
puts("\302\260"); // correctly writes UTF-8 data to Windows console with CP_UTF8
이는 콘솔 API가 CP_UTF8을 사용할 때 별도의 호출로 전달된 데이터를 잘못된 인코딩으로 해석하기 때문입니다.
이 문제를 해결하려면 생성을 고려하세요. 멀티바이트 문자 변환을 정확하게 처리하고 쓰기 간 변환 상태를 유지하는 streambuf 하위 클래스입니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3