DB·로그에서 깨진 값
연결 문자셋이 맞지 않아 안녕 처럼 저장된 고객 이름이나 로그 한 줄을 붙여 넣어, 원래 글자와 틀린 설정을 함께 찾습니다.
MOJIBAKE · KOREAN ENCODING REPAIR
깨진 이 글자, 원래 뭐였을까?
안녕하세요 처럼 알아볼 수 없게 된 한글을 붙여 넣으면 UTF-8·EUC-KR(CP949)·Latin-1·CP1252 조합으로 되돌린 후보를 한글다움 점수 순으로 보여 줍니다. 어떤 인코딩 실수였는지도 함께 알려 줍니다.
| 이렇게 보이면 | 무슨 일이 있었나 | 복구 |
|---|---|---|
| 안녕하세요 | UTF-8 데이터를 Latin-1/CP1252 로 읽음 | 가능 |
| ¾È³çÇϼ¼¿ä | EUC-KR 데이터를 Latin-1/CP1252 로 읽음 | 가능 |
| 안녕 | 위 실수가 두 번 겹침(이중 인코딩) | 대부분 가능 |
| 占쏙옙, � | 디코딩 실패로 바이트가 이미 버려짐 | 불가 |
| 뷁, 궭 (희귀 음절) | EUC-KR을 UTF-8로 읽는 등 우연히 유효했던 조합 | 부분적 |
깨짐에는 두 종류가 있습니다. 바이트는 그대로인데 잘못 보여준 경우(Latin-1로 읽은 UTF-8 등)는 해석만 되돌리면 되므로 완전 복구가 됩니다. 반면 디코딩 단계에서 해석 불가 바이트가 �(U+FFFD)로 대체된 경우는 정보 자체가 사라진 뒤라 수학적으로 복구가 불가능합니다. UTF-8을 EUC-KR로 읽은 경우가 대표적으로, 일부 바이트 조합만 우연히 살아남아 부분 복구만 됩니다.
CP949(UHC)는 EUC-KR의 확장으로, EUC-KR에 없는 8,822자(옛 완성형 밖의 음절)를 더 담습니다.
브라우저의 TextDecoder('euc-kr')는 WHATWG 표준에 따라 실제로는 CP949(windows-949)로
동작하므로, 이 도구의 EUC-KR 경로는 CP949 데이터도 처리합니다.
전송되지 않습니다. 변환은 전부 브라우저의 자바스크립트가 하며 네트워크 요청이 발생하지 않습니다. 개발자 도구의 네트워크 탭으로 확인해 보셔도 됩니다.
관련 도구: 한글 초성 정규식 생성기 · URL 인코더/디코더 · 해시 생성기
MADE FOR YOUR WORK
연결 문자셋이 맞지 않아 안녕 처럼 저장된 고객 이름이나 로그 한 줄을 붙여 넣어, 원래 글자와 틀린 설정을 함께 찾습니다.
오래된 메일 클라이언트나 시스템이 보낸 ¾È³ç 같은 제목을 Latin-1 로 잘못 읽힌 EUC-KR 로 되돌려 읽습니다.
외부 API 가 EUC-KR 로 응답했는데 UTF-8 로 읽었는지, 그 반대인지 후보 이름으로 확인하고 코드의 charset 설정을 고칩니다.
� 나 占쏙옙 이 섞여 있으면 몇 곳이 이미 손실됐는지 세어 주어, 원본을 다시 받아야 하는지 빨리 판단할 수 있습니다.
STEP BY STEP
이렇게 쓰세요
깨진 문자열 칸에 텍스트를 넣으면 버튼 없이 바로 계산합니다. 처음이라면 '깨짐 예시 넣기' 버튼으로 세 가지 깨짐을 먼저 보세요.
복구 후보가 한글다움 점수 순으로 정렬됩니다. 각 후보에는 'Latin-1로 잘못 읽힌 UTF-8' 같은 원인 이름과 한글 비율이 붙습니다.
후보에 '� N곳 손실' 배지가 있으면 그 자리는 바이트가 이미 사라져 되살릴 수 없다는 뜻입니다.
맞는 후보의 복사 버튼을 누릅니다. 같은 실수가 반복된 데이터라면 원인 이름을 보고 저장·전송 쪽 인코딩 설정을 고치세요.
UNDERSTAND THE BASICS
컴퓨터는 글자를 바이트로 저장하고, 어떤 바이트가 어떤 글자인지는 인코딩이라는 표가 정합니다. '안'은 UTF-8 에서 EC 95 88 세 바이트, EUC-KR 과 CP949 에서는 BE C8 두 바이트입니다. 저장할 때와 읽을 때 다른 표를 쓰면 글자가 깨집니다. UTF-8 바이트를 서유럽용 CP1252(Latin-1 계열) 표로 읽으면 한 바이트가 한 글자가 되어 안 같은 모양이 나옵니다.
EUC-KR 은 자주 쓰는 한글 2,350자만 담은 완성형이고, CP949 는 여기에 나머지 음절 8,822자를 더해 현대 한글 11,172자를 모두 표현하는 마이크로소프트 확장입니다. 윈도 메모장의 ANSI, 엑셀이 CSV 를 열 때 기본으로 가정하는 인코딩이 한국어 윈도에서는 CP949 이기 때문에 UTF-8 CSV 가 엑셀에서 깨지는 일이 흔합니다.
복구가 되는 경우와 안 되는 경우는 분명히 갈립니다. 잘못 '보여 준' 것뿐이라 바이트가 그대로 남아 있으면 거꾸로 되짚어 완전히 되살릴 수 있습니다. 반면 읽는 과정에서 해석하지 못한 바이트를 대체 문자 �(U+FFFD)로 바꿔 저장했다면 원래 바이트는 이미 버려졌습니다. 占쏙옙 은 이 � 두 개를 UTF-8 로 저장한 바이트(EF BF BD EF BF BD)를 다시 CP949 로 읽은 모양이라, 역시 되살릴 수 없습니다.
| 보이는 모양 | 일어난 일 | 복구 |
|---|---|---|
| 안녕하세요 | UTF-8 을 Latin-1·CP1252 로 읽음 | 가능 |
| ¾È³çÇϼ¼¿ä | EUC-KR(CP949)을 Latin-1·CP1252 로 읽음 | 가능 |
| 안... | 위 실수가 두 번 겹침(이중 인코딩) | 대부분 가능 |
| � 또는 占쏙옙 | 해석 못 한 바이트가 이미 대체됨 | 불가 |
안녕, 占쏙옙, 뷁 같은 깨진 한글을 여러 인코딩 조합(UTF-8, EUC-KR/CP949, Latin-1, CP1252)으로 되돌려 보고 한글다움 점수 순으로 후보를 보여줍니다. 브라우저에서만 처리되며 입력값을 서버로 보내지 않습니다.
깨진 텍스트를 붙여 넣고 복구 후보를 확인하세요. 원본 바이트가 물음표 등으로 이미 손실된 경우에는 완전한 복구가 불가능할 수 있습니다.
QUICK EXAMPLE
깨진 한글 문자열 붙여넣기
인코딩 조합에 따른 복구 후보 비교
이미 물음표나 대체 문자로 손실된 데이터는 원래 글자로 복구할 수 없습니다.
깨진 글자를 되돌린다는 것은, 지금 화면에 있는 문자를 어떤 인코딩의 바이트로 되돌린 다음 다른 인코딩으로 다시 읽는다는 뜻입니다. 이 도구는 UTF-8·EUC-KR/CP949·Latin-1·CP1252 조합을 차례로 시도하고 나온 후보를 모두 보여줍니다.
읽는 쪽은 브라우저의 TextDecoder를 쓰지만 쓰는 쪽은 직접 만들어야 했습니다. 표준 TextEncoder는 UTF-8만 내보내기 때문에, 디코더로 만든 표를 뒤집어 문자에서 바이트로 가는 역테이블을 구성했습니다.
Latin-1은 특히 조심해야 합니다. TextDecoder에 iso-8859-1을 넘기면 규격상 CP1252로 매핑돼 0x80~0x9F 구간이 달라집니다. 하필 한글 깨짐에서 자주 등장하는 구간이라 Latin-1은 별도로 구현했습니다.
후보가 여러 개 나오므로 '한글다움' 점수를 매겨 정렬합니다. 완성형 음절이 많고 대체 문자가 적을수록 위로 올립니다. 사람이 눈으로 고르는 수고를 줄이는 어림짐작이지 정답 판정이 아닙니다.
U+FFFD(�)가 섞인 문자열은 되돌릴 수 없습니다. 그 자리의 원래 바이트는 디코더가 이미 버린 뒤라 어떤 도구로도 되살릴 수 없습니다.
BEFORE YOU FINISH
깨진 글자를 발견하고 그 상태로 편집기에서 저장하면, 편집기가 처리 못 한 바이트를 � 로 바꿔 복구 가능성이 사라질 수 있습니다. 원본 파일은 그대로 두고 복사본으로 작업하세요.
BOM 없는 UTF-8 CSV 는 한국어 엑셀에서 CP949 로 읽혀 깨집니다. 엑셀의 데이터 가져오기에서 인코딩을 UTF-8 로 고르거나, BOM 을 붙여 저장하세요.
테이블은 utf8mb4 인데 접속 문자셋이나 JDBC 설정이 다르면 저장 단계에서 깨집니다. 테이블·접속·애플리케이션 세 곳의 문자셋을 함께 맞추세요.
뜻이 있는 글자가 아니라 깨짐의 흔적입니다. 대체 문자 �(U+FFFD)의 UTF-8 바이트를 CP949 로 읽으면 占쏙옙 이 되며, 원래 글자 정보는 이미 사라져 복구할 수 없습니다.
UTF-8 로 쓴 한글을 Latin-1 이나 CP1252 로 읽은 경우입니다. 붙여 넣으면 'CP1252로 잘못 읽힌 UTF-8' 후보가 원래 문장으로 나옵니다.
CP949 는 EUC-KR 을 넓힌 확장이라, EUC-KR 에 없는 똠·햏 같은 음절도 담습니다. 이 도구는 브라우저의 EUC-KR 디코더를 쓰는데, 웹 표준에서 이 디코더는 CP949 로 동작하므로 두 경우를 모두 처리합니다.
점수는 완성형 한글이 많고 깨짐 문자가 적을수록 높게 매긴 어림값입니다. 보통 맨 위가 정답이지만, 짧은 입력은 우연히 한글처럼 보이는 후보가 섞일 수 있으니 내용을 직접 읽어 확인하세요.
안 됩니다. 저장하는 쪽이 표현할 수 없는 글자를 ? 로 바꿔 쓴 경우라, 원래 글자의 정보가 파일에 남아 있지 않으니 원본 데이터를 다시 받아야 합니다.
이 도구의 입력 데이터는 브라우저에서 처리하며 도구 기능을 위해 서버로 업로드하지 않습니다. 결과를 공유하기 전 민감한 정보가 없는지 확인하세요.