피드로 돌아가기
Dev.toBackend
원문 읽기
Concordance DAT 파일의 þ 구분자가 CP1252에서 1바이트(FE), UTF-8에서 2바이트(C3 BE)로 표현되어 인코딩 불일치 시 파싱이 완전히 실패하는 문제
Why Your Concordance DAT File Won't Parse: The þ Delimiter Encoding Trap
AI 요약
Context
Concordance DAT 파일은 eDiscovery에서 표준 로드 파일 형식으로, þ(thorn, U+00FE)를 필드 구분자로 사용한다. ®(registered sign, U+00AE)를 인용 문자로 사용하며, 이 문자들이 실제 문서 메타데이터에 거의 나타나지 않도록 의도적으로 선택되었다.
Technical Solution
-þ 구분자가 CP1252 인코딩에서는 FE(1바이트), UTF-8 인코딩에서는 C3 BE(2바이트)로 표현되어 parser가 잘못된 인코딩을 가정하면 필드 경계 인식에 실패한다
- DAT 파일은 인코딩 선언, BOM, 헤더 메타데이터가 없어서 수동 감지가 필수적이다
- 4단계 감지 전략으로 BOM 확인 → strict UTF-8 디코드 → CP1252 þ 바이트 패턴 분석 → chardet 통계 감지를 순차 적용한다
- 인코딩 변환 후 구분자 수를 원본과 비교 검증해야 데이터 손상을 방지할 수 있다
- 혼합 인코딩 파일은 줄 단위로 UTF-8 디코드 시도 후 실패 줄을 CP1252로 식별한다
Impact
CP1252 파일을 UTF-8으로 잘못 읽으면 FE 바이트가 유효하지 않은 UTF-8 시작 바이트로 처리되어 UnicodeDecodeError 발생 또는 치환, 구분자 무시 중 하나가 발생한다.
Key Takeaway
DAT 파일 처리 시 인코딩 감지와 구분자 검증은 선택이 아닌 필수 단계이며, 변환 전후의 구분자 수 비교가 데이터 무결성 확인의 핵심이다.
실천 포인트
eDiscovery 환경에서 Concordance DAT 파일 처리 시 인코딩 감지 로직을 4단계(BOM, UTF-8 strict, þ 바이트 패턴, chardet)로 구성하여 적용하면 인코딩 불일치로 인한 파싱 실패를 방지할 수 있다