텍스트 총정리가 필요한 순간은 예고 없이 찾아옵니다. 엑셀에서 붙여넣은 값에 보이지 않는 공백이 남아 있거나, 오래된 CSV 파일이 물음표로 깨져 보이거나, 협업 상대에게 넘긴 파일의 줄바꿈 방식이 달라 오류가 나는 상황이 대표적입니다. 이 글에서는 문자 인코딩부터 공백 정리, 대소문자 변환, 정규식 치환까지 실무에서 반복적으로 마주치는 텍스트 작업을 한 번에 정리합니다.
1. 문자 인코딩: 텍스트가 깨지는 진짜 이유
텍스트 파일은 겉보기에 글자를 담고 있지만, 실제로 저장되는 것은 숫자입니다. 어떤 숫자를 어떤 글자로 읽을지 정한 약속이 문자 인코딩입니다. 저장할 때 쓴 인코딩과 열 때 쓴 인코딩이 다르면 한글이 깨져 보이는 현상이 발생합니다.
| 인코딩 | 한글 1글자 크기 | 주로 만나는 곳 |
|---|---|---|
| UTF-8 | 3바이트 | 웹, 최신 프로그램, 대부분의 API |
| EUC-KR (CP949) | 2바이트 | 구형 관공서 자료, 오래된 엑셀 CSV |
| UTF-16 | 2바이트 | 윈도우 내부, 일부 유니코드 텍스트 파일 |
| ASCII | 표현 불가 | 영문 전용 설정 파일, 로그 |
깨진 글자의 모양으로도 원인을 짐작할 수 있습니다. 한글이 물음표나 네모로 보이면 원본 정보 자체가 손실된 경우가 많고, 알 수 없는 라틴 문자가 규칙적으로 반복되면 UTF-8 파일을 EUC-KR로 잘못 읽은 경우가 많습니다. 후자는 인코딩만 바꿔 다시 열면 대부분 복구됩니다.
2. 공백과 특수문자 정리 3단계
웹페이지나 PDF에서 복사한 텍스트에는 눈에 보이지 않는 문자가 함께 따라옵니다. 데이터가 중복 제거되지 않거나 검색에 걸리지 않는 원인 대부분이 여기에 있습니다. 다음 순서로 정리하면 누락 없이 처리됩니다.
- 앞뒤 공백 제거: 문자열 양 끝의 공백과 탭을 잘라냅니다. 이름, 이메일, 상품 코드 같은 키 값에서 가장 흔한 오류 원인입니다.
- 중간 공백 정규화: 두 칸 이상 연속된 공백을 한 칸으로 줄이고, 탭 문자는 공백으로 통일합니다.
- 비가시 문자 제거: 줄바꿈 없는 공백(U+00A0), 폭 없는 공백(U+200B), 바이트 순서 표시(BOM, U+FEFF)를 제거합니다. 이 문자들은 화면상 일반 공백과 구분되지 않습니다.
3. 실무에서 반복되는 변환 5가지
텍스트 작업의 상당수는 아래 다섯 가지 유형으로 수렴합니다. 각 변환이 언제 필요한지 알아두면 문제 상황에서 원인을 빠르게 좁힐 수 있습니다.
- 대소문자 변환: 이메일 주소와 도메인은 소문자로 통일하는 것이 원칙입니다. 상수명이나 태그 값은 대문자로 맞춥니다.
- 줄바꿈 형식 변환: 윈도우는 CRLF, 맥과 리눅스는 LF를 사용합니다. 설정 파일이나 스크립트에서 원인 모를 오류가 난다면 줄바꿈 형식을 먼저 확인해 볼 만합니다.
- 한글 정규화(NFC/NFD): 맥에서 만든 파일명을 윈도우에서 열면 자음과 모음이 분리되어 보이는 현상이 대표적입니다. NFC로 결합하면 정상 표시됩니다.
- URL 인코딩: 주소창에 한글이나 공백이 들어갈 때 퍼센트 기호가 붙은 형태로 바뀝니다. 링크 공유나 검색 파라미터 확인에 필요합니다.
- Base64 인코딩: 이미지나 첨부 파일을 텍스트로 옮겨 담을 때 사용합니다. 암호화가 아니라 단순 변환이라는 점을 기억해야 합니다.
이런 변환을 매번 수식이나 코드로 처리하기 번거롭다면 텍스트 변환기처럼 브라우저에서 바로 결과를 확인할 수 있는 도구를 활용하면 검증 시간이 줄어듭니다. 특히 인코딩 결과를 눈으로 대조해야 하는 작업에서 효율적입니다.
4. 정규식으로 한 번에 처리하기
정리해야 할 텍스트가 수백 줄이라면 정규식이 가장 빠른 해법입니다. 대부분의 에디터와 스프레드시트 도구가 정규식 찾기와 바꾸기를 지원하므로, 아래 패턴 몇 개만 알아도 반복 작업의 상당 부분이 사라집니다.
| 패턴 | 의미 | 활용 예 |
|---|---|---|
| \\s+ | 하나 이상의 공백 | 연속 공백을 한 칸으로 축소 |
| ^\\s+|\\s+$ | 줄 앞뒤의 공백 | 들여쓰기와 꼬리 공백 일괄 제거 |
| ^$\\n | 빈 줄 | 문단 사이 빈 줄 정리 |
| [^가-힣a-zA-Z0-9\\s] | 한글, 영문, 숫자, 공백 외 문자 | 특수문자 일괄 제거 |
| \\d{2,3}-\\d{3,4}-\\d{4} | 전화번호 형태 | 연락처 추출 및 형식 검증 |
5. 텍스트 작업 전 확인할 체크리스트
파일을 넘기거나 데이터를 시스템에 올리기 전에 아래 항목을 훑어보면 되돌리기 어려운 실수를 대부분 막을 수 있습니다.
- 파일 인코딩이 UTF-8인지 확인했는가
- BOM 포함 여부가 받는 쪽 요구사항과 일치하는가
- 앞뒤 공백과 비가시 문자를 제거했는가
- 줄바꿈 형식이 대상 환경에 맞는가
- 구분자로 쓰는 쉼표나 탭이 데이터 값 안에 섞여 있지 않은가
- 변환 전 원본 파일을 별도로 보관했는가
텍스트 처리는 겉보기에 단순해 보이지만, 문제가 생겼을 때는 원인을 찾기가 까다로운 영역입니다. 인코딩과 공백, 줄바꿈이라는 세 가지 축을 먼저 점검하는 순서만 몸에 익혀 두면 대부분의 상황에서 해결 시간이 크게 단축됩니다.