1월 15, 2026

증상 확인: 텍스트 파일이 이상한 문자로 표시되나요?

한글이 포함된 텍스트 파일(.txt, .csv, .log 등)을 열었을 때 “�” 같은 물음표나 네모, 또는 전혀 예상치 못한 외국어 문자(예: ‘우리다’)로 표시되는 현상입니다. 가령 다른 컴퓨터에서 받은 파일이나 오래된 프로그램에서 생성된 파일, 웹에서 다운로드한 데이터를 엑셀 등으로 열 때 자주 발생합니다. 이는 파일이 손상된 것이 아니라, 파일을 저장할 때 사용한 ‘문자 코드 규칙'(인코딩)과 파일을 열 때 프로그램이 가정한 규칙이 맞지 않아 생기는 해석 오류입니다.

원인 분석: UTF-8과 EUC-KR의 충돌

간단히 말해, 컴퓨터는 문자 자체를 저장하지 않고 숫자 코드로 저장합니다. 이 숫자 코드를 문자로 바꾸는 규칙표가 ‘인코딩’입니다. EUC-KR은 한글 완성형 2,350자만을 주로 지원하는 오래된 한국어 전용 규칙입니다. 반면 UTF-8은 전 세계 모든 언어의 문자를 하나의 규칙으로 표현할 수 있는 국제 표준(Unicode) 방식입니다. 문제는, EUC-KR로 저장된 파일을 UTF-8로 잘못 열거나, 그 반대의 경우에 발생합니다. EUC-KR에 없는 문자(예: ‘똠’, ‘쀍’ 같은 확장 한자)를 사용했다면, 아무리 인코딩을 맞춰도 깨질 수 있습니다.

주의사항: 인코딩 변환 작업을 시작하기 전에, 반드시 원본 파일을 복사해 백업하십시오. 변환 과정에서 파일이 완전히 손상될 수 있습니다, 특히 바이너리 파일(.exe, .jpg, .hwp 등)은 절대 텍스트 인코딩 변환을 시도하지 마십시오.

해결 방법 1: 프로그램의 인코딩 강제 지정으로 열기 (가장 빠른 방법)

파일을 여는 프로그램 자체에서 인코딩을 수동으로 선택하여 열어보는 방법입니다. 파일을 변환하지 않고 올바르게 보기만 할 때 유용합니다.

  1. 메모장(Windows) 활용:
    • 메모장을 실행한 후, 파일 > 열기를 클릭합니다.
    • 깨진 파일을 선택하기 전, 오른쪽 하단의 인코딩 드롭다운 메뉴를 클릭합니다.
    • 기본값이 ‘UTF-8’이라면 ANSI를, ‘ANSI’라면 UTF-8을 선택한 후 파일을 엽니다, (메모장에서 ‘ansi’는 일례로 시스템 로캘에 따라 euc-kr로 해석되는 경우가 많음)
    • 글자가 정상적으로 보이면, 파일 > 다른 이름으로 저장에서 원하는 인코딩(utf-8 권장)을 선택해 새로 저장합니다.
  2. 엑셀에서 csv/txt 파일 열기:
    • 엑셀에서 데이터 > 텍스트/csv에서를 선택합니다.
    • 파일을 선택하면 ‘파일 가져오기’ 창이 열립니다. 이 창 하단의 파일 원본 인코딩 항목을 클릭합니다.
    • 목록에서 65001: Unicode (UTF-8) 또는 949: 한국어(EUC-KR) 등을 차례로 변경해보며 미리보기가 정상화되는지 확인합니다.
    • 정상적으로 보이는 인코딩을 선택한 후 로드를 클릭합니다.

해결 방법 2: 전문 편집기를 이용한 변환 및 재저장 (근본적인 해결)

메모장으로 해결이 안 되거나, 대량의 파일을 일괄 변환해야 할 때 사용합니다. Notepad++나 VS Code와 같은 전문 텍스트 편집기를 활용하는 것이 가장 정확하고 강력합니다.

Notepad++를 사용한 변환 절차

  1. Notepad++를 설치하고 깨진 파일을 엽니다.
  2. 상단 메뉴에서 인코딩을 클릭합니다. 현재 추정된 인코딩이 체크되어 있을 것입니다 (예: EUC-KR로 변환).
  3. 이 메뉴에서 인코딩 자동探测 또는 직접 한국어 > EUC-KR과 UTF-8을 번갈아 선택하며 화면의 텍스트가 제대로 보이는지 확인합니다. 이 단계가 가장 중요합니다.
  4. 텍스트가 정상적으로 표시되는 인코딩을 찾았다면, 다시 인코딩 메뉴로 이동합니다.
  5. 이번에는 변환 항목을 선택합니다. 목표 인코딩(현재는 대부분 UTF-8을 선택하는 것이 호환성에 유리)을 클릭합니다.
  6. 변환 후 파일을 저장(Ctrl+S)하면 완료됩니다. 파일이 완전히 새로운 인코딩으로 재작성됩니다.

VS Code의 경우, 파일을 연 상태로 하단 상태 바의 인코딩 표시를 클릭하여 ‘인코딩으로 다시 열기’ 또는 ‘저장’ 옵션을 선택함으로써 데이터 해석 오류를 수동으로 교정할 수 있습니다. 이는 시스템이 텍스트를 잘못 읽어 글자가 깨지는 현상을 방지하고, 데이터의 본래 의미를 정확하게 복원하는 핵심적인 절차입니다. 이처럼 복잡한 코드와 텍스트 사이에서 정확한 규격(인코딩)을 찾아 정보를 식별하는 능력은 수만 개의 기업이 거래되는 글로벌 자본 시장에서 내가 원하는 종목을 정확히 찾아내는 과정과 매우 흡사합니다. 이름이 유사한 기업들 사이에서 혼동을 피하고 데이터의 무결성을 유지해야 하기 때문입니다. 인코딩 형식을 지정하여 문서의 내용을 명확히 확인하듯, 전 세계 투자자들이 약속한 고유 기호를 통해 특정 기업에 오차 없이 접근하고 싶다면 미국 주식 티커(Ticker) 뜻: 애플(AAPL), 테슬라(TSLA) 검색 방법을 숙지해 보시기 바랍니다. 잘못된 인코딩이 글자 깨짐을 유발하듯, 티커를 정확히 알지 못하면 엉뚱한 기업에 투자하는 실수를 범할 수 있습니다. 따라서 티커라는 고유 식별자를 정확히 활용하는 것은 디지털 환경에서 인코딩을 맞추는 것만큼이나 데이터의 정확성을 담보하는 투자자의 기본 소양입니다.

해결 방법 3: 명령줄(CMD) 또는 스크립트를 이용한 일괄 변환 (고급/대량 처리)

수십, 수백 개의 텍스트 파일을 한 번에 변환해야 하는 시스템 관리자나 개발자를 위한 방법입니다. 에이지옵저버토리 환경에서 중요한 점은 windows PowerShell을 사용합니다.

  1. PowerShell 실행: 작업 표시줄 검색에서 ‘PowerShell’을 검색하여 관리자 권한이 아닌 일반 모드로 실행합니다.
  2. 작업 디렉토리 이동: 변환할 파일들이 있는 폴더로 이동합니다. 예: cd C:\Users\사용자명\Documents\txt_files
  3. 일괄 변환 명령어 실행: 다음 명령어를 입력합니다. 이 명령은 현재 폴더의 모든 .txt 파일을 EUC-KR에서 UTF-8로 변환합니다.

    Get-ChildItem -Filter *.txt | ForEach-Object { $content = Get-Content $_.FullName -Encoding Default; Set-Content -Path $_.FullName -Value $content -Encoding UTF8 }
  4. 명령어 해설 및 커스터마이징:
    • -Filter *.txt: 변환할 파일 확장자를 지정합니다. *.csv 등으로 변경 가능.
    • -Encoding Default: 시스템의 기본 ANSI 코드페이지(한국어 Windows에서는 보통 EUC-KR)로 파일을 읽습니다. 소스 파일이 명확히 UTF-8로 깨졌다면 -Encoding UTF8로 읽고 -Encoding Default로 저장하는 식으로 순서를 바꿉니다.
    • -Encoding UTF8: 최종 저장할 인코딩을 지정합니다.

이 방법은 강력그렇지만 원본 파일을 직접 덮어쓰므로, 반드시 테스트용 파일로 시험하거나 백업본에서 실행해야 합니다.

주의사항 및 예방책

인코딩 문제는 해결하는 것보다 미리 방지하는 것이 훨씬 효율적입니다.

  • 새 파일 생성 시 기본 인코딩을 UTF-8로 설정하라: Notepad++, VS Code, Sublime Text 등의 편집기에서는 기본 저장 인코딩을 UTF-8로 설정할 수 있습니다. 이 설정을 변경해 두십시오.
  • 데이터 교환 시 명시하라: 타인에게 텍스트 파일을 보낼 때, 혹은 받을 때 “이 파일은 UTF-8 인코딩입니다”라고 미리 알리는 습관이 문제를 절반으로 줄입니다.
  • EUC-KR의 한계를 인지하라: EUC-KR은 표준 한글만 처리 가능합니다. 사용자 이름, 특수한 전문 용어, 옛한글 등이 포함될 가능성이 있다면 무조건 UTF-8을 사용해야 합니다.
  • BOM(Byte Order Mark) 문제: UTF-8에는 BOM이라는 파일 앞머리 표시가 있을 수 있습니다. 일부 오래된 프로그램은 이 BOM을 인식하지 못해 문제를 일으킬 수 있습니다. Notepad++의 인코딩 > UTF-8 BOM 없이 인코딩 옵션을 사용하면 BOM 없이 저장할 수 있습니다.

전문가 팁: 진단은 어떻게 할까? 파일의 정확한 인코딩을 모를 때, 메모장이나 간단한 편집기로는 추정만 가능합니다. 가장 확실한 방법은 16진수 편집기(Hex Editor, HxD 등 무료 툴多)로 파일을 열어 처음 몇 바이트를 확인하는 것입니다. EF BB BF로 시작하면 UTF-8 with BOM입니다. 한글 문자의 바이트 패턴을 보고 EUC-KR인지 UTF-8인지 유추할 수도 있습니다. 또한, 명령줄에서 file -i [파일명] 명령어(리눅스/ macOS 또는 Windows의 Git Bash 등에서 사용 가능)를 실행하면 파일의 인코딩을 추정해서 알려줍니다. 이는 정확한 진단에 큰 도움이 됩니다.

성능 향상 팁: 개발 환경에서 작업한다면, IDE(통합 개발 환경)나 코드 편집기의 파일 인코딩 자동 감지 기능을 설정해 두십시오, 또한, 프로젝트 차원에서 모든 소스 코드 파일과 리소스 파일의 인코딩을 utf-8로 통일하는 규칙을 정하면 협업 시 발생할 수 있는 수많은 문제를 근본적으로 차단할 수 있습니다. 시스템 로캘 설정이 한국어로 되어 있는지 확인하는 것도(EUC-KR 환경에서 파일을 생성하는 경우에 대비) 예방 차원에서 중요합니다.