Visual Studio에서 C++ 파일을 utf-8로 저장하기

Visual Studio에서는 네이티브 언어 파일, 즉 C++ 파일을 2015 버전에 이른 오늘날까지도 여전히 UTF-8로 저장하지 않는다. 꼭 필요한 상황이 아니라면 굳이 UTF-8로 바꾸지 않아도 컴파일하고 실행하는 데 별 문제가 없지만 요즘은 다른 응용 프로그램 또는 다른 시스템과 함께 사용할 때 인코딩 문제로 간혹 불편할 때가 있을 수 있다. 그래서 아예 UTF-8로 바꾸는 게 편할 수도 있으므로 그 방법을 적어 본다.

구글링을 해 보면 옛날 글이지만 UTF-8로 바꾸는 방법을 쉽게 찾을 수 있으며 그 중 대표적인 글이 바로 아래에 있는 내용이다.

새 파일로 만들 때는 간단히 처리할 수 있지만 그 외엔 제법 복잡해 보이는 방법을 따라야 하는 게 단점이다. 뭔가 바꿔야 하는 것은 귀찮고 귀찮은 건 당연히 싫으니까 좀 더 간편한 방법을 찾았다. 파일을 저장할 때 UTF-8로 저장해 주는 Visual Studio 확장 기능이다. 두 가지가 있는데 BOM 추가 여부만 다르다.

이미 사용 중인 프로젝트는 인코딩 변환 프로그램으로 전체 파일을 변환 후 사용하면 되겠다.

그런데 둘 중 무엇을 사용할지 고민이 생겼다. UTF-8는 BOM 없이 사용하는 걸 권장하지만 인코딩 변환 등에서 BOM을 사용하기도 한다고 한다. 하지만 Visual C++에서 공식적으로 지원하는 유니코드 파일 인코딩은 BOM이 있는 UTF-8이다. BOM 없는 파일에서는 브레이크 포인트를 설정하거나 컴파일할 때 문제가 생길 수도 있다고 한다. 게다가  현재 사용 중인 코드 페이지에서 표현할  수 없는 문자가 있다는 경고도 뜬다. 과거에는 GCC에서 BOM 있는 UTF-8 파일을 인식하지 못하는 문제가 있었지만 이 역시 4.4 버전에서 수정했다고 한다.

결론은 버킹… 아니 BOM 있는 UTF-8을 쓰면 된다. 물론 BOM 있는 UTF-8 파일이 간혹 문제를 일으키기도 한다며 이를 없애는 확장 기능도 있으니 참고하자. 위에 있는 ForceUTF8은 BOM을 추가하지 않을 뿐 BOM을 없애지는 않는다.

Notes:
1. FILE -> Advanced Save Options… 메뉴에서 인코딩을 지정해 저장할 수 있지만 파일 단위로 해야 하는 거라 너무 불편하니 제외한다.
FILE -> Advanced Save Options… 메뉴에서 인코딩을 지정해 저장할 수 있지만 파일 단위로 해야 하는 거라 너무 불편하니 제외한다.