보이지 않는 문자 감지기이란?

보이지 않는 문자 감지기는 텍스트에서 너비가 없는 공백, 소프트 하이픈, 줄 바꿈 없는 공백 등 숨겨진 유니코드 문자를 찾아냅니다. 이러한 문자는 코드 버그를 유발하거나 복사·붙여넣기를 방해하고 악성 콘텐츠를 숨기는 데 악용될 수 있습니다. 텍스트를 붙여넣으면 모든 보이지 않는 문자를 유니코드 이름과 위치와 함께 즉시 확인할 수 있습니다.

검출기는 여섯 가지 범주를 검사합니다: 너비 없음 문자(U+200B, U+200C, U+200D), 방향 표시(LRM, RLM), 변형 선택자, 제어 문자, 비정상 공백(non-breaking, em-quad, hair), 기타 드문 비가시 문자입니다. 검출된 각 항목은 유니코드 이름, 16진 코드 포인트, 위치, 범주를 함께 보여주며, 범주별 필터링과 클릭 한 번으로 정리된 텍스트 복사도 가능합니다.

사용 방법

  1. 입력 영역에 텍스트를 붙여넣거나 직접 입력하세요 — 숨겨진 문자가 입력과 동시에 즉시 감지됩니다.
  2. 각 보이지 않는 문자의 유니코드 이름, 위치, 문맥이 강조 표시된 결과를 확인하세요.
  3. 필터 칩으로 제거할 범주를 고른 뒤 '텍스트 정리'를 클릭하세요. 정리된 결과는 복사하거나 다운로드할 수 있습니다.

사용 시기

  • 웹 페이지에서 복사한 뒤 원인 모를 문법 오류가 나는 코드를 디버깅할 때.
  • 사용자가 입력한 문자열을 데이터베이스에 저장하기 전에 정제할 때.
  • 수상한 이메일이나 문서에 동형이의 문자나 숨겨진 유니코드가 포함됐는지 확인할 때.

결과

웹사이트에서 복사한 코드 조각이 계속 구문 오류를 일으킬 때 붙여넣으면, 감지기가 변수 이름 사이에 숨어 있는 너비 없는 공백 두 개와 줄 끝의 오른쪽-왼쪽 표시를 찾아냅니다 — 편집기에서는 보이지 않지만 컴파일러를 망가뜨리는 문자들입니다.

자주 묻는 질문

너비 없는 공백이 무엇이고 왜 코드를 망가뜨리나요?
U+200B는 본래 아시아 문자 조판을 위해 설계된 비가시 문자입니다. 코드에 붙으면 두 글자 사이에 들어가 있어도 보이지 않으므로 'const foo'가 컴파일러에는 'const⁠foo'라는 알 수 없는 식별자로 인식되어 곧장 오류가 납니다.
비가시 문자는 무조건 나쁜 건가요, 정당한 용도가 있는 것도 있나요?
많은 경우 유용합니다. 너비 없음 결합자는 가족 이모지를 만들고, 변형 선택자는 이모지의 표시 방식을 바꾸며, non-breaking 공백은 이름이 줄 끝에서 잘리지 않게 보호합니다. 검출기가 범주별로 분류해 주므로 필요한 것은 남기고 나머지만 제거할 수 있습니다.
비가시 문자가 악의적으로 쓰이기도 하나요?
쓰입니다. 피싱 메일은 양방향 오버라이드 문자(U+202E)를 끼워 넣어 'invoice.exe'를 'invocxe.pdf'처럼 보이게 만들기도 합니다. 프롬프트 인젝션 공격에서도 쓰이며, 검출기에 텍스트를 넣으면 이런 조작이 즉시 드러납니다.
'텍스트 정리'는 모든 비가시 문자를 지우나요, 일부 범주만 지우나요?
현재 필터에 표시된 비가시 문자를 모두 제거합니다. 만약 '공백' 범주를 꺼 두었다면 비정상 공백은 그대로 남습니다. 완전 정리를 원한다면 정리 전에 여섯 범주를 모두 활성화하세요.
검출기가 일반 공백이나 줄바꿈도 표시하나요?
아닙니다. ASCII 공백(U+0020), 탭(U+0009), 줄바꿈(U+000A/U+000D)은 기본적으로 예상되는 문자라 표시되지 않습니다. 보고서에는 non-breaking, hair, en-space 같은 비정상 변종만 나타나 실제 이상값에 집중할 수 있게 합니다.

관련 도구