0
I 윈도우 콘솔에 UTF-8 문자를 인쇄하는 코드를 가지고,출력
가SetConsoleOutputCP(65001);
freopen(NULL, "w,ccs=UTF-8", stdout);
wchar_t u16 = 0x00A9;
unsigned char utf8_b[] = {0xc2, 0xa9, 0x0}; //same as using WideCharToMultibyte for u16
printf("%s", utf8_b); //(1)
wprintf(L"%c", u16); //(2)
(1) '©'인 올바른 출력을 생성한다 (2)의 출력하면서 대체 문자 U + FFFD입니다. 나는 stdout (2)를 파일로 리디렉션하여 인코딩 변환에 문제가 있는지 확인했지만 utf8_b []와 동일한 바이트 시퀀스를 생성했습니다.
누구든지 내게 설명 할 수 있습니까? 이 문제가 Windows 문제입니까?
btw, 내 콘솔 글꼴은 이미 Consolas로 설정되어 있습니다.
편집 : (2)를 사용하기 전에 의견을 말합니다. 따라서 스트림 방향과 관련이 없습니다. Windows 코드 페이지 65001의 일부 구현 버그가 C 표준 IO에 영향을 줄 수있는 곳을 읽었습니다. 아무도 나를 위해 이것을 확인할 수 있습니까?
['putwchar'] (http://www.cplusplus.com/reference/cwchar/putwchar/)은 어떨까요? – Kninnug
@Kninnug 같은 결과 (2) =. = – hatsuyuki
이것은 나에게 전혀 도움이되지 않습니다. VS 버전은 무엇입니까? –