UTF-8과 EUC-KR, 한글이 깨지는 이유

파일을 열었더니 한글이 이상하게 보인다면, 원인은 대부분 인코딩입니다.

문자 인코딩은 컴퓨터가 0과 1로 이루어진 바이트를 어떤 글자로 해석할지 정한 규칙입니다. 같은 바이트라도 어떤 인코딩 규칙을 적용하느냐에 따라 완전히 다른 글자로 읽히기 때문에, 파일을 저장할 때 쓴 인코딩과 읽을 때 가정하는 인코딩이 다르면 글자가 깨져 보입니다.

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 등 다른 인코딩으로 저장된 기존 데이터를 다룰 때는 여전히 변환 과정이 필요합니다.