로딩
요청 처리 중입니다...

[파이썬 한글 깨짐 완전 정복] 문자열 인코딩(UTF-8)부터 파일 입출력 오류 해결까지 총정리

 [파이썬 한글 깨짐 완전 정복] 문자열 인코딩(UTF-8)부터 파일 입출력 오류 해결까지 총정리

파이썬에서 문자열은 문자들이 순서대로 배열된 시퀀스이며, 작은따옴표나 큰따옴표로 표현한다. 문자열은 불변 특성을 가지므로 한 번 만들어지면 내부 데이터는 수정되지 않고, 특정 글자를 바꾸려면 새로운 문자열을 만들어야 한다. 이때 불변성은 보안성과 메모리 효율성, 예측 가능한 동작으로 이어진다.

문자열의 내부 구조는 인덱스와 슬라이싱으로 다룬다. 인덱스는 0부터 시작하고 음수 인덱스로는 뒤에서부터 셀 수 있으며, 슬라이싱은 시작 인덱스 포함 끝 인덱스 미포함 원칙으로 부분 문자열을 얻는다. 문자열의 길이는 len()로 확인하며, 문자열은 대소문자 변환, 공백 제거, 찾기와 바꾸기, 나누기와 합치기, 포매팅 등의 메서드로 자유롭게 처리된다. 포매팅은 주로 f-string이 가장 간결하고 널리 쓰이며, 그 전후로 format이나 구식 방식인 %도 존재한다.

이스케이프 문자와 원시 문자열의 차이는 문자열 안에 줄바꿈, 탭, 따옴표 등을 표현하는 방식에서 나타난다. 이스케이프 문자 역시 백슬래시로 시작하며, 줄바꿈이나 특수 문자를 표현하는 용도로 쓰인다. 원시 문자열(r"문자열")은 이러한 이스케이프 문자를 해석하지 않고 그대로 출력하도록 해 작업을 안전하게 만든다.

파일 입출력과 인코딩은 문자열 처리에서 핵심이다. 파일을 열고 읽고 쓰는 과정에서 인코딩을 명시하지 않으면 운영체제 기본 인코딩으로 읽히거나 저장되어 한글이 깨질 수 있다. 텍스트 파일은 utf-8을, Windows 환경의 CSV는 utf-8-sig를 권장한다. 파일 입출력의 3단계 흐름은 열기, 읽기/쓰기, 닫기이며, 안전한 방식인 with 구문으로 파일을 다루면 자동으로 닫힌다.

바이너리 파일은 이미지나 동영상처럼 바이트 단위로 다뤄야 하며, 텍스트와 달리 인코딩을 적용하지 않는다. 인코딩은 문자와 숫자 간의 번역 규칙으로, 인코딩 불일치는 UnicodeEncodeError나 UnicodeDecodeError를 야기한다. 이를 방지하려면 항상 읽고 쓸 때 동일한 인코딩을 사용하고, 필요 시 chardet 등 도구로 인코딩을 확인·변환하며, 환경에 따라 기본 인코딩이 다를 수 있음을 염두에 둬야 한다.

환경별 기본 인코딩은 Windows의 cp949와 macOS, Linux의 UTF-8 차이에서 비롯되며, 터미널과 편집기의 인코딩 통일이 중요하다. 파이썬 기본 인코딩은 UTF-8이지만, 운영체제나 터미널에 따라 다를 수 있어 입출력 시 명시적 인코딩 지정이 필요하다. 협업 시에는 모든 파일을 UTF-8로 저장하고, CSV는 UTF-8-sig를 활용하는 원칙이 실무에서 자주 권장된다.

# encodeDecode # 한글깨짐 # 프로그래밍기초 # 파일입출력 # 파이썬한글 # 파이썬실습 # 파이썬 # 코딩초보 # 초보파이썬 # 인코딩오류 # 문자인코딩 # 디코딩 # 개발입문 # UTF8vsCP949 # UTF8 # Python # 환경별인코딩