C4819 Warning 의 경우는 파일의 저장 포맷 형식이 UTF-8 With BOM 으로 설정되지 않아서 발생하는 문제이다.
여기서 UTF-8 은 그냥 같은 UTF-8 이 아니라,
UTF-8 Without BOM 과 UTF-8 With BOM 으로 나뉘어 진다.
.cpp, .hpp 파일을 저장 할 때,
한글, 중국어 등 multi-byte characters 가 하나라도 들어간다면
반드시 UTF - 8 With BOM(Signature) 으로 설정해야만, 해당 경고가 없어진다.
참고로, 해당 오류는 오지랖 넓은 '경고' 메세지가 아니다.
해당 문제로 인해 컴파일 단계에서는 문제가 없을 지 몰라도
Runtime 단계에서 디버그 해볼 시에 한글 글자가 깨지는 모습을 살펴 볼 수 있다.
StackOverFlow 링크에서 Martin Wang 의 답변을 살펴보면.
한글(multi-byte) 이 깨질 위험성이 존재한다고 말 해 주고 있으며, 실제로 필자도 해당 경고 메세지를 무시 하였다가
납품단계의 프로그램 내의 한글 문자가 일부 깨지는 현상이 발생 하였다.
때문에 해당 경고 메세지를 무시하지 말고, 반드시 BOM 을 포함한 UTF - 8 을 사용하도록 하자.
※ 이는 Windows 10 , Visual Studio 기준이다.
※ single-byte 언어 (ex : 영어) 기준으로는 BOM 을 제거한 UTF - 8 을 사용하는것을 권장한다.
'Programming > C++' 카테고리의 다른 글
[C++] 람다식 mutable 의 쓰임세. (0) | 2020.12.07 |
---|---|
[C++] push_back vs emplace_back 차이점 (2) | 2020.12.07 |
[C++] constexpr 사용하기. (0) | 2020.11.22 |
[C++] 함수 포인터 (0) | 2020.11.01 |
[C++] C++ 이 끔찍한 언어라 욕을 먹는 이유. (0) | 2020.09.30 |