궁금증이 생긴 이유
책을 공부하면서 Jet brain사의Clion ide를 사용하고 있는데, 영어로는 잘 출력이 되는데 한글로 결과를 출력하면 자꾸 값이 깨져서 출력이 됐다.
구글링을 통해서 UTF-8형식에서 x-windows-949 으로 바꾸면 문제가 해결되는 것을 알았지만,
UTF-8과 x-windows-949가 정확히 뭔지, 두 형식 간의 차이가 뭐길래 문제가 해결되는 지가 궁금했다.
궁금증 해결 과정
인코딩이란?
인코딩이랑 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것이다.
디코딩이란?
그 역으로 컴퓨터의 신호를 문자나 기호로 만드는 것이다.
인코딩의 변화
처음 영어로만 컴퓨터를 다룰 때는 아스키 코드만을 사용해도 가능했지만, 한국어를 비롯해 다른 나라의 언어들을 추가하다보니 아스키코드가 다룰 수 있는 1byte의 숫자로는 표현을 할 수 없게 되었다.
그래서 1byte가 아닌 여러 byte를 사용하는 멀티바이트 인코딩을 사용하게 되었다.
이 때, 완성형 인코딩(CP949 / MS949, WINDOWS949라고 불리는)과 조합형 인코딩 등 여러 방식을 사용하였는데, 서로 다른 인코딩 방식을 사용한 프로그램 사이에서 호환성 문제가 발생하게 되었다.
그래서 이를 통일하기 위해서 유니코드를 새로 만들었다. 이는 2byte 숫자와 1:1 매핑하는 방식을 사용하는 방식이고, 이 중 하나가 UTF-8이다.
결론
UTF-8이 CLION에서 default형식으로 되어있기 때문에 CP949형식으로 되어있는 것을 디코딩할 때 깨지는 것이 아닐까 싶다.
jet brain사의 문의 답변들을 보아도 해결을 어떻게 했는지는 나오지만 이유가 무엇인지는 쓰여있는 것이 없어서 이번 기회에 공부한 것을 바탕으로 추론해보았다.
만약 더 자세한 내용을 아시거나 틀린 정보가 있다면 언제든 알려주세요!