문제는 엑셀이 아니라 전달 과정입니다

AI에게 엑셀 파일을 만들어 달라고 했는데 결과 파일 안에 한글 대신 ???가 들어가는 일이 있습니다.

이때 초보자는 보통 이렇게 생각합니다.

  • 엑셀이 한글을 못 읽나?
  • AI가 이상하게 작성했나?
  • 파이썬이 한글을 지원하지 않나?

대부분은 셋 다 아닙니다.

진짜 원인은 한글이 프로그램에 도착하기 전에 이미 물음표로 바뀌었기 때문입니다.

어떤 상황에서 자주 생기나

가장 흔한 패턴은 PowerShell에서 한글이 들어간 Python 코드를 바로 파이프로 넘기는 방식입니다.

@'
print("한글이 들어간 코드")
'@ | python -

겉으로는 편해 보입니다. 파일을 따로 만들지 않고 바로 실행할 수 있기 때문입니다.

하지만 이 과정에서 PowerShell 콘솔, 파이프, Python 입력 인코딩이 서로 맞지 않으면 한글이 깨질 수 있습니다. 더 위험한 점은 Python이 코드를 실행할 때 이미 "한글"이 아니라 "??"를 받은 상태일 수 있다는 것입니다.

그 상태로 엑셀을 저장하면 엑셀은 깨진 값을 그대로 저장합니다. 엑셀이 깨뜨린 것이 아니라, 이미 깨진 데이터를 충실하게 저장한 것입니다.

UTF-8 설정만으로 항상 해결되지 않는 이유

PYTHONIOENCODING=utf-8 같은 설정은 도움이 됩니다.

하지만 이 설정은 Python이 입출력을 처리할 때의 인코딩을 맞추는 장치입니다. PowerShell 파이프를 지나면서 한글이 이미 ?로 바뀌었다면 Python은 원래 한글을 복구할 수 없습니다.

즉, UTF-8 설정은 안전장치이지 마법 복원 기능이 아닙니다.

한번 한글??로 바뀌면, 프로그램은 그 물음표가 원래 어떤 글자였는지 알 수 없습니다.

안전한 방식은 따로 있습니다

한글이 들어간 작업은 명령어 한 줄로 처리하려고 하지 말고, 먼저 UTF-8 파일로 저장한 뒤 실행하는 편이 안전합니다.

예를 들면 이런 흐름입니다.

python make_output.py

여기서 중요한 것은 make_output.py 파일 자체가 UTF-8로 저장되어 있어야 한다는 점입니다.

이 방식은 PowerShell 파이프를 통해 한글 코드가 지나가지 않습니다. 그래서 한글이 중간에서 깨질 가능성이 훨씬 줄어듭니다.

엑셀 파일은 한글을 저장할 수 있습니다

.xlsx 파일은 한글을 정상적으로 저장할 수 있습니다.

문제는 엑셀 형식이 아니라 엑셀에 넣기 전 단계입니다.

안전한 순서는 다음과 같습니다.

  1. 한글이 들어간 Python 스크립트를 UTF-8 파일로 저장한다.
  2. python 파일명.py로 실행한다.
  3. 생성된 엑셀을 다시 열어 실제 셀 값을 확인한다.
  4. ? 문자가 있으면 성공으로 보지 않는다.
  5. 원인을 고친 뒤 다시 생성한다.

AI가 “완료했습니다”라고 말해도, 파일 안에 물음표가 있으면 완료가 아닙니다.

초보자가 기억할 규칙

첫째, 한글이 들어간 긴 코드는 파이프로 실행하지 않습니다.

둘째, 한글 데이터가 들어간 파일 생성 작업은 UTF-8 스크립트 파일로 실행합니다.

셋째, 생성 후에는 반드시 결과 파일을 다시 열어 검증합니다.

넷째, ???가 보이면 엑셀을 고치는 것이 아니라 생성 과정을 고쳐야 합니다.

다섯째, “성공 메시지”보다 “결과 파일 내용”을 믿어야 합니다.

AI에게 이렇게 지시하면 좋습니다

한글이 포함된 파일을 만들 때는 AI에게 다음처럼 지시하는 것이 안전합니다.

한글이 포함된 파일을 만들 때 PowerShell 파이프로 Python 코드를 실행하지 마라.
UTF-8 인코딩의 .py 파일을 먼저 만들고 python 파일명.py로 실행하라.
생성 후 파일을 다시 열어 '?' 문자가 있는지 검사하라.
'?'가 있으면 성공으로 보고하지 말고 즉시 재생성하라.

이 지시는 AI에게 작업 방식과 검증 기준을 동시에 알려줍니다.

사용자에게 필요한 교훈

AI 자동화에서 가장 위험한 착각은 “명령이 실행됐으니 결과도 맞을 것”이라고 믿는 것입니다.

파일 생성 작업은 실행보다 검증이 더 중요합니다. 특히 한글, 엑셀, CSV, 자막, 스크립트처럼 문자 인코딩이 중요한 작업에서는 더 그렇습니다.

초보자에게 필요한 습관은 단순합니다.

파일을 만들었다면, 다시 열어 확인하세요.

그 안에 ???가 있으면 그건 작은 표시가 아닙니다. 작업 과정 어딘가에서 데이터가 이미 손상됐다는 신호입니다.

AI를 잘 쓰는 사람은 AI가 만든 결과를 그대로 믿지 않습니다. AI가 만든 결과가 실제로 쓸 수 있는지 확인하는 기준을 함께 만듭니다.