클로드 한글 깨짐, 원인은 밝혀졌어요: 해결법과 아직 남은 물음표

클로드(Claude)를 쓰다가 한글이 이상하게 나온 적 있으실 거예요. 오타는 아닌데 말이 안 되는 글자요. 추천추첸이 되고, 멀쩡하던 단어가 처음 보는 글자로 바뀌어 있고요.

저도 몇 번 겪고는 "내가 잘못 봤나" 싶었어요. 근데 제 착각이 아니었습니다. 원인 분석이 나와 있고, 근거도 꽤 탄탄해요. 다만 해결법 쪽은 아직 확인이 덜 됐습니다. 그 둘을 갈라서 알려드릴게요!

이것도 혼자 찾은 게 아니라 스레드에서 누가 공유해줘서 알았어요. 한국어로 AI 쓰다 막히는 건 같이 파는 게 제일 빠르죠. 24기 AI 스터디 둘러보기 ->

증상부터 보실게요

깨진 한글은 이렇게 생겼어요.

  • 추천이 추첸으로: 받침이나 모음이 한 칸씩 어긋납니다
  • 문장 속 한두 글자만 바뀜: 전체가 깨지는 게 아니라 드문드문 섞여요
  • 글자로는 정상: 추첸도 한글 음절이라 인코딩 깨짐처럼 물음표나 占쏙옙이 안 뜹니다

마지막 게 오래 못 잡은 이유예요. 보통 인코딩이 깨지면 아예 못 읽는 글자가 나오죠. 이건 읽히는데 뜻이 없는 단어로 바뀌니까 오타로 착각하고 넘어가게 돼요.

나타나는 자리도 정해져 있어요. AskUserQuestion이나 TodoWrite처럼 도구를 호출하면서 한글을 넘길 때입니다.

원인: 이스케이프로 쓰다가 헥스를 틀립니다

앤트로픽(Anthropic) 클로드 코드 저장소의 이슈 83033에 원인 분석이 올라와 있어요. 8월 1일에 등록됐고 아직 열려 있습니다.

모델이 도구 호출 파라미터에 한글을 넣을 때, 글자를 그대로 쓰지 않고 \uXXXX 형태의 유니코드 이스케이프로 쓸 때가 있어요. 이라면 \uD55C 이렇게요. 그런데 이 헥스 코드를 틀리게 적습니다. 한 자리만 틀려도 완전히 다른 한글 음절이 나오고요.

여기가 핵심이에요. 헥스를 틀려도 결과가 여전히 유효한 한글 음절이라는 것. 그래서 시스템이 오류를 못 잡고 그대로 통과시킵니다.

이슈에 붙은 통제된 A/B 실험 결과는 이래요.

  • 이스케이프로 쓴 실행 45번 중 45번, 100%에서 한글이 깨졌습니다
  • 깨진 비율은 음절 기준 3%에서 5% 정도
  • 반면 글자를 그대로 쓴 실행에서는 이 문제가 안 나왔어요

다만 이 100%를 오해하면 안 돼요. "클로드를 쓰면 무조건 깨진다"가 아니라 이스케이프로 쓰기 시작하면 그때는 반드시 깨진다는 뜻입니다. 이스케이프로 쓸지 말지 자체가 간헐적이거든요. 그래서 어떤 날은 멀쩡하고 어떤 날은 엉망인 거예요.

어디까지 확인됐나

이슈 댓글을 읽어보면 그림이 좀 더 잡혀요.

소넷 5만의 문제가 아니에요. 8월 19일에 Opus 5에서도 보고됐어요. 멀쩡하게멀잩하게로 나왔고, 세션 로그에서 이미 깨져 있었다니 터미널 렌더링 탓도 아니고요.

드문 음절이 잘 깨져요. 같은 응답에서 불러올, 밝혔, 같은 흔한 음절은 멀쩡했는데 드문 음절만 깨졌대요.

실사용에선 3%에서 5%보다 훨씬 심할 수 있어요. 어느 회사 운영 담당자 세션에서는 내용어가 거의 전부 틀린 음절이라, 원어민도 뭘 묻는지 복원할 수 없었다는 보고가 있고요.

앤트로픽 쪽은 재현을 못 했어요. 8월 16일에 메인테이너가 CLI 2.1.233에서 세 번 돌렸는데 세 번 다 멀쩡했대요. 간헐적이라는 분석과 들어맞는 결과지만, 고치기가 그만큼 까다롭다는 뜻이기도 하고요.

지금 나와 있는 해결법

이슈 작성자가 제안하고 스레드에서 min_d0ll님이 공유해주신 방법이에요. CLAUDE.md에 아래를 넣습니다.

Always write Korean (and other non-ASCII) strings in tool-call parameters
as literal UTF-8; never as \uXXXX unicode escape style.

"도구 호출 파라미터에 한글 같은 non-ASCII는 항상 UTF-8 글자 그대로 쓰고 이스케이프는 절대 쓰지 마라"는 뜻이에요.

원인이 "이스케이프로 쓸 때 헥스를 틀린다"였으니, 아예 안 쓰게 만들면 틀릴 일이 없어진다는 발상이에요.

여기서 솔직하게 말씀드릴 게 있어요. 이 방법이 통한다는 근거는 지금까지 이슈 작성자 본인의 실험 하나뿐이에요. 댓글에 "저도 넣어보니 되더라"고 확인해준 사람이 아직 없습니다. 앤트로픽 쪽 공식 수정도 안 나왔고요.

그래도 넣어볼 만해요. 원인 분석은 근거가 탄탄하고, 지시문 한 줄이라 잘못돼도 잃을 게 없거든요. 다만 넣었으니 안전하다고 믿지는 마시고, 한글이 중요한 작업은 눈으로 확인하세요.

저희도 오늘 똑같은 자리에서 당했어요

재미있는 게, 이 글을 쓰다가 저희도 이스케이프 때문에 사고가 났어요.

본문에 의 코드포인트를 예시로 넣으려고 \uD55C라고 적었는데, 파일로 저장되고 나니 그 자리가 그냥 으로 바뀌어 있더라고요. 그래서 `한`이라면 `한` 이렇게요 라는, 읽으면 아무 뜻도 없는 문장이 나왔어요.

방향은 반대예요. 이슈는 모델이 헥스를 틀리게 쓰는 거고, 저희 건 제대로 쓴 표기가 저장되며 풀린 거니까요. 그래도 결은 같아요. 이스케이프는 어디선가 조용히 해석되고, 결과가 멀쩡해 보여 아무도 못 잡는다는 것요.

더 무서운 건 이거예요. 저희는 발행 전에 줄표 개수, 표 사용, 말투 비율을 검사하는 게이트를 돌리거든요. 그런데 다 통과했어요. 이스케이프를 보는 항목이 없었으니까요.

그래서 게이트에 항목을 넣었어요. 두 가지를 봅니다.

  • 본문이 이스케이프를 설명하는데 코드 표기 안에 이스케이프 리터럴이 하나도 없으면 경고
  • 같은 인라인 코드가 연달아 반복되면 경고. `한`이라면 `한` 같은 게 디코딩 흔적이거든요

깨졌던 사본으로 돌려보니 두 건 다 잡혔어요. 이제는 통과 못 합니다.

이걸 굳이 적는 이유는요. 규칙을 아는 것과 검사하는 건 다르더라고요. 저희는 줄표 규칙도 알면서 검사 목록에 없어서 두 번이나 새어나갔어요. 혹시 AI로 글이나 코드를 뽑아 쓰신다면, 아는 규칙을 검사로 옮겨두셨는지 한 번 보세요.

넣고 나서 확인하는 법

  1. CLAUDE.md에 위 문장을 넣고 저장합니다
  2. 새 세션을 엽니다. 기존 세션은 이미 읽은 CLAUDE.md로 돌고 있어서 반영이 안 돼요
  3. 한글이 많이 들어가는 작업을 시켜봅니다. 할 일 목록을 한국어로 만들게 하거나 선택지를 한국어로 물어보게 하면 좋아요
  4. 나온 한글을 눈으로 읽습니다. 말이 되는지만 보면 됩니다

간헐적인 문제라 한 번 멀쩡했다고 고쳐진 게 아니에요. 앤트로픽도 세 번 다 멀쩡했는데 문제는 여전하잖아요. 며칠 써보셔야 합니다.

정리하면

  • 한글이 깨지는 건 인코딩 문제가 아니라 모델이 유니코드 이스케이프를 잘못 쓰는 문제입니다
  • 이스케이프로 쓰기 시작하면 그때는 100% 깨져요. 다만 이스케이프로 쓸지 자체가 간헐적입니다
  • 소넷 5뿐 아니라 Opus 5에서도 확인됐고, 드문 음절일수록 잘 깨집니다
  • 깨진 결과도 유효한 한글이라 시스템이 못 걸러요. 그래서 오래 안 잡혔습니다
  • CLAUDE.md 한 줄이 제안돼 있지만 아직 독립 확인은 없어요. 잃을 게 없으니 넣되, 눈으로 확인하는 습관은 유지하세요

한국어로 AI를 쓰다 보면 이런 걸 자주 만나요. 영어권에서는 문제가 안 되니 자료도 없고, 혼자 겪으면 내 설정이 잘못된 줄 알고 헤매게 되죠. 국내 자료를 찾아봐도 대부분 파일 인코딩 문제로 보고 있어서, 엉뚱한 데를 고치게 되고요.

그래서 부탁 하나 드릴게요. CLAUDE.md에 넣어보시고 어땠는지 지피터스에 남겨주세요. 지금 이 이슈에 제일 필요한 게 바로 "여러 사람이 넣어보니 어떻더라"는 데이터거든요. 모이면 저희가 이슈에 같이 올려도 좋고요!


확인일: 2026년 9월 3일

출처

2
1개의 답글