안녕하세요 현재, CLion IDE(인텔리제이 만든 회사에서 만든 C++ IDE입니다.) 사용중 입니다.
비쥬얼스튜디오에서는 관련 인코딩 문제를 겪지 못했는데, CLion 넘어오고나서 문제들이 발생하여
이틀동안이나 구글링 해보았는데, 해결법은 찾아도 이유를 알지 못해 답답해서 끙끙대다가 타고타고 이곳까지 오게되었습니다.
<상황>
1. 제 OS는 윈도우입니다.
2. 개행문자는 CLion에서 LF를 지정해주어서 LF를 사용하고 있습니다.
3. Console의 code page CP949입니다.
4. 시스템 로켈 언어도 CP949입니다.
5. MinGW 컴파일러를 사용중입니다.
<문제>
교수님이 ANSI로 인코딩 된 파일을 주셔서, 이를 메모장을 이용해 UTF-8로 전환 후,
CLion에서 컴파일하자, 콘솔창에 깨진 한글이 떠서, CMAKE file에 CMAKE_CXX_FLAGS "fexec-charset="CP949" 커맨드를 추가하여 해결했습니다.
Project encoding= UTF-8, 해당 소스코드의 인코딩 = UTF-8입니다. 이렇게 할 경우 모두 컴파일이 잘 되는것을 확인했습니다.
<질문>
1. 시스템 로켈 언어 설정이 어떤 영향을 미치는지
ex) 예를들어, 위 상황에서 cmd콘솔의 코드페이지를 65001로 전환하였을 때, CMAKE_CXX_FLAGS "fexec-charset="CP949" 커맨드 없이도 콘솔창에서 한글을 확인 할 수 있습니다. 그러나, 이때 다음과 같은 코드에서 문제가 발생합니다.
string str;
std::cin >> str;
std::cout << str << std::endl;
이라는 코드에서, str에 키보드로 한글("안녕세상")이라고 입력하면, str에 '뭔가가 입력되긴 하는데'
(if(str.empty()) 로 확인했습니다) cout으로 확인 할수가 없습니다, 한글이 출력되는것도 아니고, 영어가 출력되는것도 아니며, 깨진 한글이 출력되는것도 아닌, '안보이는 무언가'가 입력됩니다.
2. Setting의 Encoding과 우측하단의 Encoding이 무슨 의미를 나타내는지
>Setting의 Encoding
>우측 하단의 encoding
각 빨간 부분을 의미합니다.
setting의 encoding중 project encoding을 UTF-8로 하지않으면,
Converting to execution character set : Illegal byte sequence라고 뜹니다.
(참고로 1번의 문제 외에는 모두 커맨드 CMAKE_CXX_FLAGS "-fexec-charset=CP949를 이용중입니다)
또한 우측하단의 encoding을 UTF-8로 하지않으면, 콘솔창에 깨진한글이 출력됩니다.
이때, 각 인코딩 항목이 무엇을 의미하는건지, (ex.) 컴파일 전에 소스코드를 해당 인코딩형식으로 인코딩 하기 때문에, 해당 소스코드가 UTF-8이 아니면 ~~때문에 콘솔창에 깨진 한글이 출력된다.) 이런식으로 알려주실 수 있나요? 또한, Setting의 encoding 항목들이 각각 무엇을 의미하는지도 질문드리고 싶습니다.
3. CMAKE_CXX_FLAGS "fexec-charset=CP949 라는 커맨드가 어떤 효과를 나타내는지 알고 싶습니다.
4. 찾다보니 CLion은 c++을 컴파일하기위해 VM을 사용한다고 나와있는데,
이때 VM option중 Dconsole.encoding = UTF-8 이나 Dfile.encoding=UTF-8 등은 어떤 의미를 갖는건지 알고 싶습니다...


아이티뱅크에 오시면 무조건 취업 보장해드립니다.최고의 강사들밖에 없어서 비전공자들이 잘 따라올 수 있습니다.얼른 상담 받으러 오세요 ^^