C/C++ 소스/빌드 인코딩 처리 (VS, Windows 11)
C/C++ 소스/빌드 인코딩 처리 (VS, Windows 11)
출처: https://blog.naver.com/techshare/223627851096
C/C++ - 소스코드 파일의 인코딩, 바이너리 모듈 상태의 인코딩
개발자가 작성하는 소스코드는 텍스트 파일이고, 그 파일의 인코딩 방식은 개발자가 선택할 수 있습니다. ...
blog.naver.com
요약:
[문제]
"한글 Windows 11" + "비주얼 스튜디오 2022" 환경이라면 C/C++ 프로젝트를 생성 시 소스코드 파일에 대해 UTF-8(with BOM) 인코딩을 기본 설정된다. 그러나, "영문 Windows 11"의 경우에는 "Western European (Windows)" 인코딩이 기본 설정된다.
[해결]
"Save documents as Unicode when data cannot be saved in codepage" 옵션 활용
또는
"File" / "Save ... As" 메뉴 "Save As" 대화상자에서, "Save" 버튼의 우측 화살표를 펼쳐 "Save with Encoding..." 옵션 이용.
Encoding : Korean - Codepage 949
[문제] Visual C++의 경우, A/W 버전에 대해 char, wchar_t로 나뉘어서 표현을 하는데요, char은 현재 시스템의 인코딩을, wchar_t는 UTF-16 인코딩을 사용함.
[해결] pragma, 리터럴 지시어, char8_t 타입 등 활용
1. #pragma execution_character_set("utf-8")
2. u8, u, U 리터럴 이용
// ISO C++17 표준(/std:c++17) 이하
const char* text = u8"한글"; // utf-8 인코딩: ed 95 9c ea b8 80
// ISO C++20 표준(/std:c++20) 이상
const char8_t* text = u8"한글"; // utf-8 인코딩: ed 95 9c ea b8 80