IT관련/C#

CP949 인코딩이란?

파란하늘999 2025. 10. 27. 17:26

CP949는 한국어 텍스트를 처리하기 위한 문자 인코딩 방식으로, 주로 Microsoft Windows 환경에서 사용되는 한국어 기본 코드 페이지입니다. 한글과 영어를 포함한 다국어 지원을 위해 개발되었으며, EUC-KR의 확장 버전으로 알려져 있습니다. '통합 완성형' 또는 '확장 완성형'이라고도 불리며, 웹 개발이나 파일 처리 시 자주 마주치는 인코딩 문제의 원인이 되기도 합니다. 이 글에서는 CP949의 기본 개념, 역사, 특징, 그리고 티스토리 블로그 운영 시 유용한 팁을 간단히 정리하겠습니다. 

1. CP949의 기본 개념

  • 정의: 컴퓨터가 텍스트를 숫자로 변환하는 '인코딩' 방식 중 하나. CP949는 한글 문자를 2바이트로 표현하는 고정 길이 인코딩으로, KS C 5601 표준을 기반으로 합니다. ASCII(영문)와 한글을 함께 처리할 수 있어 Windows의 기본 설정으로 채택되었습니다.
  • 왜 필요한가?: 과거 컴퓨터는 한글을 제대로 표시하지 못했는데, CP949는 이를 해결하기 위해 개발된 '완성형' 코드(초성·중성·종성 조합으로 완성된 글자)입니다. 예를 들어, '가'는 별도의 코드로 저장되어 깨짐 현상을 방지합니다.

2. 역사와 배경

  • 개발 배경: 1990년대 Microsoft가 Windows 95용으로 EUC-KR을 확장해 만들었습니다. EUC-KR(한국 표준 인코딩)이 일부 한글 문자를 커버하지 못하자, 이를 보완한 버전으로 등장했습니다.
  • 현재 상태: Windows 10/11에서도 여전히 기본이지만, 웹 표준으로는 UTF-8이 대세입니다. (2025년 기준, 유니코드 전환이 진행 중이지만 레거시 시스템에서 자주 보입니다.)

3. 주요 특징

특징 설명 예시
바이트 길이 고정 2바이트 (한글) / 1바이트 (ASCII) '안녕' → 4바이트
지원 문자 KS X 1001 한글 11,172자 + 추가 확장 문자 (총 23,540자) EUC-KR보다 더 많은 한글 포함
장점 Windows 호환성 높음, 파일 크기 효율적 엑셀/워드 파일 처리 시 안정적
단점 유니코드와 호환성 낮아 웹에서 깨짐 발생 UTF-8로 변환 필요
  • 인코딩 예시: Python에서 확인해보면 text.encode('cp949')으로 변환 가능. (코드 실행 시 에러 발생 시 errors='ignore' 옵션 추가.)

4. EUC-KR / UTF-8과의 비교

  • EUC-KR: 한국 표준 인코딩. CP949의 기반이지만, 일부 한글(예: 'ㆍ' 같은 특수문자) 미지원. CP949는 이를 모두 커버합니다.
  • UTF-8: 유니코드 기반 가변 길이(1~4바이트). 웹/모바일 표준으로, CP949보다 범용적. 하지만 CP949 파일을 UTF-8로 읽을 때 UnicodeDecodeError 에러가 발생할 수 있습니다.
인코딩 기반 바이트 주요 용도
CP949 MS Windows 2바이트 고정 데스크톱 앱
EUC-KR KS C 5601 2바이트 고정 Unix/Linux
UTF-8 Unicode 1~4바이트 가변 웹/모바일

 

CP949는 레거시지만, 여전히 Windows 중심 작업에서 필수입니다.

반응형