문자 인코딩은 컴퓨터가 0과 1로 이루어진 바이트를 어떤 글자로 해석할지 정한 규칙입니다. 같은 바이트라도 어떤 인코딩 규칙을 적용하느냐에 따라 완전히 다른 글자로 읽히기 때문에, 파일을 저장할 때 쓴 인코딩과 읽을 때 가정하는 인코딩이 다르면 글자가 깨져 보입니다.
UTF-8과 EUC-KR, 한글이 깨지는 이유
파일을 열었더니 한글이 이상하게 보인다면, 원인은 대부분 인코딩입니다.
UTF-8과 EUC-KR의 차이
UTF-8은 전 세계 거의 모든 문자를 표현할 수 있는 유니코드 기반 인코딩으로, 문자에 따라 1~4바이트를 가변적으로 사용하며 오늘날 웹과 대부분의 시스템에서 기본값으로 씁니다. EUC-KR은 한글만을 위해 만들어진 오래된 2바이트 인코딩으로, 예전 한국 시스템이나 문서, 일부 레거시 데이터베이스에서 여전히 발견됩니다.
왜 한글이 깨질까요?
가장 흔한 경우는 EUC-KR로 저장된 파일을 UTF-8로 읽거나, 반대로 UTF-8 파일을 EUC-KR로 읽을 때입니다. 두 인코딩은 같은 바이트를 서로 다른 문자로 해석하므로, 프로그램이 잘못된 인코딩을 가정하면 한글 대신 물음표나 알아볼 수 없는 기호가 나타납니다.
인코딩 변환 도구가 도움이 되는 이유
깨진 문자열을 보고 원래 인코딩을 바로 알아내기는 어렵습니다. 인코딩 변환 도구는 같은 값을 UTF-8, EUC-KR 등 여러 인코딩으로 동시에 해석해 보여주므로, 그중 실제로 읽히는 문장이 있는 후보를 찾아 원래 인코딩을 추정할 수 있습니다.
자주 묻는 질문
인코딩을 모르는 파일의 원래 인코딩을 확실히 알 수 있나요?
100% 보장하기는 어렵습니다. 다만 여러 인코딩으로 해석한 결과를 나란히 비교해, 실제로 자연스러운 문장이 되는 후보를 찾는 방식으로 상당히 신뢰도 높게 추정할 수 있습니다.
UTF-8만 쓰면 인코딩 문제를 완전히 피할 수 있나요?
새로 만드는 파일이나 시스템이라면 UTF-8로 일관되게 통일하는 것만으로 대부분의 문제를 피할 수 있습니다. 다만 이미 EUC-KR 등 다른 인코딩으로 저장된 기존 데이터를 다룰 때는 여전히 변환 과정이 필요합니다.