한글 대신 물음표가 보일 때: ?와 �의 차이

한글 대신 ?나 � 기호가 보이나요? 둘은 비슷해 보이지만 원인이 다릅니다. 파일은 멀쩡한 경우가 많지만, 이미 글자가 사라진 경우도 있습니다. 어느 쪽인지 구별하는 방법을 알려 드립니다.

텍스트와 다음 파일을 지원합니다:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • SMI
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

엑셀 내보내기, 데이터베이스 덤프, 자막, 웹사이트 코드 등.

복구하기

  1. 파일을 끌어다 놓거나 텍스트 붙여넣기
  2. 자동으로 복구
  3. 복사하거나 내려받기
또는 파일을 여기로 끌어다 놓기
  • 업로드 없음. 파일은 브라우저 안에서 복구되며 기기 밖으로 나가지 않습니다.

  • EU 내 서버. Mojibuster는 핀란드(EU)의 서버에서 운영되며 EU 일반 개인정보 보호법(GDPR)이 적용됩니다. GDPR 원문(EUR-Lex, 영어)

경우 1: 파일은 멀쩡한데 �로 보일 때

메모장, 편집기, 브라우저에서 한글이 �로 보인다면 대개 파일은 EUC-KR(CP949)로 저장되어 있는데 프로그램이 UTF-8로 읽은 경우입니다. 한글 바이트가 UTF-8 규칙에 맞지 않아서 프로그램이 화면에 보여 줄 때만 대체 문자 �를 넣습니다. 파일 안에는 올바른 한글 바이트가 그대로 남아 있습니다.

해결: 원본 파일을 위 상자에 끌어다 놓으세요. Mojibuster가 파일을 읽으면서 인코딩을 알아내고 UTF-8로 변환합니다. 중요: 프로그램에서 글자를 복사하지 말고 파일 자체를 넣으세요. 복사하면 �가 그대로 굳어 버립니다. 자세한 내용은 EUC-KR을 UTF-8로 변환하기를 참고하세요.

경우 2: � 또는 ?가 글자로 저장된 경우

프로그램이 대체 문자를 넣은 채로 저장하거나 다른 곳에 넘겼다면 원래 글자는 사라진 것입니다. ?도 마찬가지입니다. 저장하려는 인코딩에 없는 글자가 있으면 프로그램이 그 자리에 ?를 넣습니다. 예를 들어 ASCII로 저장하거나, 한글을 담을 수 없는 데이터베이스 열에 쓸 때입니다.

EUC-KR로 저장할 때도 조심해야 합니다. EUC-KR에는 자주 쓰는 한글 2,350자만 들어 있어서 똠, 햏, 뷁처럼 목록에 없는 글자는 ?가 됩니다. 이 글자들은 CP949나 UTF-8로 저장해야 남습니다.

이렇게 바뀐 글자는 되돌릴 수 없습니다. 어떤 한글이든 모두 같은 ?가 되었기 때문입니다. Mojibuster는 추측하지 않고 몇 군데가 영향을 받았는지 알려 줍니다. 원본에서 다시 내보내거나 백업을 쓰는 방법밖에 없습니다.

물음표가 생기는 흔한 원인

  • 데이터베이스: MySQL 테이블이나 연결이 latin1으로 되어 있는데 한글 데이터가 들어오면 MySQL이 알 수 없는 글자를 ?로 바꿉니다. MySQL과 phpMyAdmin을 참고하세요.
  • PHP 웹페이지: 문자 집합(charset)을 지정하지 않은 EUC-KR 페이지를 브라우저가 UTF-8로 읽으면 한글이 �로 보입니다. 이 경우 파일은 대개 멀쩡합니다.
  • 메모장의 ANSI 저장: 한국어 Windows에서 ANSI 로 저장하면 CP949가 됩니다. CP949에 없는 이모지나 다른 나라 글자는 ?로 바뀝니다.
  • PowerShell 5.1: Export-Csv 는 기본적으로 ASCII로 저장해서 한글을 ?로 바꿉니다. PowerShell을 참고하세요.
  • 파이썬: encode('ascii', errors='replace') 는 아무 경고 없이 글자를 ?로 바꿉니다. 파이썬과 pandas를 참고하세요.
  • 명령 프롬프트(cmd): Windows 콘솔은 현재 코드 페이지에 없는 글자를 ?로 보여 줍니다. 대개 화면만 잘못된 것이고 파일은 멀쩡합니다.
  • 오래된 메일 프로그램: 인코딩 정보 없이 보낸 메일은 받는 쪽에서 한글이 ?나 �로 보일 수 있습니다.

어느 경우인지 확인하는 방법

  1. Notepad++처럼 인코딩을 보여 주는 편집기에서 파일을 엽니다. 아래 상태 표시줄에 "ANSI"나 "EUC-KR"이 나오면 경우 1입니다.
  2. 파일을 Mojibuster에 넣습니다. 결과에 EUC-KR(CP949)로 읽었다고 나오고 한글이 돌아왔다면 경우 1입니다. EUC-KR을 UTF-8로 변환하기를 참고하세요.
  3. Mojibuster가 사라진 글자가 있다고 알려 주면 경우 2입니다. 이때는 다시 내보내는 방법밖에 없습니다.

물음표 대신 알아볼 수 없는 이상한 글자들이 섞여 보인다면 다른 종류의 오류이고, 거의 언제나 복구할 수 있습니다: 글자 깨짐이란?

자주 묻는 질문

Mojibuster가 ?를 다시 한글로 바꿔 주나요?

아니요. ?는 어떤 글자였는지 알 수 없어서 정보가 이미 사라졌습니다. Mojibuster는 그런 부분을 건드리지 않고 몇 군데인지 알려 줍니다.

한 프로그램에서는 �가 보이고 다른 프로그램에서는 멀쩡해요. 왜 그런가요?

그렇다면 파일은 멀쩡하고, 한쪽 프로그램만 잘못된 인코딩으로 읽고 있는 것입니다. Mojibuster로 UTF-8로 변환하면 두 프로그램 모두 제대로 보여 줍니다.

똠이나 햏 같은 글자만 ?로 바뀌었어요.

파일이 EUC-KR로 저장되었기 때문입니다. EUC-KR에는 한글 2,350자만 들어 있어서 나머지 글자는 ?가 됩니다. 원본을 CP949나 UTF-8로 다시 저장하세요.

� 기호는 무엇인가요?

유니코드 대체 문자 U+FFFD입니다. 프로그램이 바이트를 글자로 읽지 못할 때 넣습니다. 인코딩 오류가 있다는 표시일 뿐 원래 글의 일부가 아닙니다.

관련 안내