[WIN32] 멀티바이트가 아닌 인코딩된 문자열을 콘솔에 표시할 때
Post
원문 보기 →[WIN32] 멀티바이트가 아닌 인코딩된 문자열을 콘솔에 표시할 때
최근, char*로 반환되는 문자열의 인코딩이 UTF-8인 경우를 맞딱뜨렸다. 이걸 UTF-8 인코딩 된 파일로 저장해서 읽으면 잘 읽어지는데 콘솔로 출력하니 인코딩이 깨지더라. std::ios는 imbue라는 locale 설정 함수가 있다. 이를 상속받은 std::ostream, std::cout 등도 동일한 함수가 있고 이를 사용하면 ios에 들어간 데이터를 해당 로케일로 인코딩하여 보여준다. 그런데 이게 안 되더라! char* recv_msg; // char*로 반환된 UTF-8 문자 std::cout.imbue(std::locale{ "ko_KR.UTF-8" }); // 한글 UTF-8 인코딩 std::cout << recv_msg << std::endl; 이런


