보이지 않는 문자 감지기이란?
보이지 않는 문자 감지기는 텍스트에서 너비가 없는 공백, 소프트 하이픈, 줄 바꿈 없는 공백 등 숨겨진 유니코드 문자를 찾아냅니다. 이러한 문자는 코드 버그를 유발하거나 복사·붙여넣기를 방해하고 악성 콘텐츠를 숨기는 데 악용될 수 있습니다. 텍스트를 붙여넣으면 모든 보이지 않는 문자를 유니코드 이름과 위치와 함께 즉시 확인할 수 있습니다.
검출기는 여섯 가지 범주를 검사합니다: 너비 없음 문자(U+200B, U+200C, U+200D), 방향 표시(LRM, RLM), 변형 선택자, 제어 문자, 비정상 공백(non-breaking, em-quad, hair), 기타 드문 비가시 문자입니다. 검출된 각 항목은 유니코드 이름, 16진 코드 포인트, 위치, 범주를 함께 보여주며, 범주별 필터링과 클릭 한 번으로 정리된 텍스트 복사도 가능합니다.
사용 방법
- 입력 영역에 텍스트를 붙여넣거나 직접 입력하세요 — 숨겨진 문자가 입력과 동시에 즉시 감지됩니다.
- 각 보이지 않는 문자의 유니코드 이름, 위치, 문맥이 강조 표시된 결과를 확인하세요.
- 필터 칩으로 제거할 범주를 고른 뒤 '텍스트 정리'를 클릭하세요. 정리된 결과는 복사하거나 다운로드할 수 있습니다.
사용 시기
- 웹 페이지에서 복사한 뒤 원인 모를 문법 오류가 나는 코드를 디버깅할 때.
- 사용자가 입력한 문자열을 데이터베이스에 저장하기 전에 정제할 때.
- 수상한 이메일이나 문서에 동형이의 문자나 숨겨진 유니코드가 포함됐는지 확인할 때.
결과
웹사이트에서 복사한 코드 조각이 계속 구문 오류를 일으킬 때 붙여넣으면, 감지기가 변수 이름 사이에 숨어 있는 너비 없는 공백 두 개와 줄 끝의 오른쪽-왼쪽 표시를 찾아냅니다 — 편집기에서는 보이지 않지만 컴파일러를 망가뜨리는 문자들입니다.
자주 묻는 질문
- 너비 없는 공백이 무엇이고 왜 코드를 망가뜨리나요?
- U+200B는 본래 아시아 문자 조판을 위해 설계된 비가시 문자입니다. 코드에 붙으면 두 글자 사이에 들어가 있어도 보이지 않으므로 'const foo'가 컴파일러에는 'constfoo'라는 알 수 없는 식별자로 인식되어 곧장 오류가 납니다.
- 비가시 문자는 무조건 나쁜 건가요, 정당한 용도가 있는 것도 있나요?
- 많은 경우 유용합니다. 너비 없음 결합자는 가족 이모지를 만들고, 변형 선택자는 이모지의 표시 방식을 바꾸며, non-breaking 공백은 이름이 줄 끝에서 잘리지 않게 보호합니다. 검출기가 범주별로 분류해 주므로 필요한 것은 남기고 나머지만 제거할 수 있습니다.
- 비가시 문자가 악의적으로 쓰이기도 하나요?
- 쓰입니다. 피싱 메일은 양방향 오버라이드 문자(U+202E)를 끼워 넣어 'invoice.exe'를 'invocxe.pdf'처럼 보이게 만들기도 합니다. 프롬프트 인젝션 공격에서도 쓰이며, 검출기에 텍스트를 넣으면 이런 조작이 즉시 드러납니다.
- '텍스트 정리'는 모든 비가시 문자를 지우나요, 일부 범주만 지우나요?
- 현재 필터에 표시된 비가시 문자를 모두 제거합니다. 만약 '공백' 범주를 꺼 두었다면 비정상 공백은 그대로 남습니다. 완전 정리를 원한다면 정리 전에 여섯 범주를 모두 활성화하세요.
- 검출기가 일반 공백이나 줄바꿈도 표시하나요?
- 아닙니다. ASCII 공백(U+0020), 탭(U+0009), 줄바꿈(U+000A/U+000D)은 기본적으로 예상되는 문자라 표시되지 않습니다. 보고서에는 non-breaking, hair, en-space 같은 비정상 변종만 나타나 실제 이상값에 집중할 수 있게 합니다.