# charset

## 목적 / 책임

EUC-KR, CP949, Shift-JIS, GBK, UTF 계열 등 문자셋 변환과 코드 페이지 매핑을 담당한다.

## 포함 경로

- `lib/charset/` — 문자셋별 구현과 매핑 테이블
- `lib/charset.dart` — 문자셋 공개 API
- `lib/cp949.dart` — CP949 관련 top-level API
- `lib/code_map.dart` — 코드 매핑 공통 데이터

## 제외 경로

- `lib/subtitle/` — 자막 포맷 파싱 책임
- `lib/platform/` — 파일/플랫폼 접근 책임

## 주요 구성 요소

- `charset.dart` — 문자셋 API 진입점
- `code_page.dart` — 코드 페이지 추상화
- `euc_kr.dart`, `euc_jp.dart`, `shift_jis.dart`, `gbk.dart` — 문자셋별 변환 구현
- `*_table.dart`, `*_map.dart` — 매핑 데이터

## 유지할 패턴

- 매핑 테이블은 의미 있는 변경만 수행하고 자동 포맷에 의한 대량 diff를 피한다.
- 새 문자셋을 추가할 때 공개 API 파일과 테스트 추가 여부를 함께 확인한다.

## 다른 도메인과의 경계

- **subtitle**: 자막 내용의 인코딩 처리가 필요해도 포맷 파싱 로직은 subtitle에 둔다.
- **platform-utilities**: 파일 읽기/쓰기나 플랫폼별 byte 접근은 platform-utilities에 둔다.

## 금지 사항

- 문자셋 테이블을 근거 없이 재정렬하지 않는다.
- 플랫폼별 파일 접근 코드를 charset 도메인에 직접 추가하지 않는다.
