사용자 콘텐츠를 템플릿에 안전하게 삽입
사용자 댓글, 폼 응답, 검색어 — <p>, <li> 또는 속성 안에 들어가는 외부 입력. HTML로 문자열 결합하기 전에 Minimal 모드 인코딩을 거치면, 마크업이 깨지거나 가장 단순한 XSS 페이로드에 당하는 일을 막을 수 있습니다.
`& < > " '` 를 안전한 HTML 엔티티로 이스케이프하거나, 엔티티로 이스케이프된 텍스트를 다시 일반 텍스트로 디코딩합니다. 4가지 인코딩 단계 — Minimal, Named, Numeric, All non-ASCII. UTF-8 + 이모지 + CJK 안전, 모두 브라우저에서.
기본값으로 Minimal을 사용하세요 — HTML 본문 / 속성 컨텍스트를 망가뜨리는 다섯 문자 & < > " '만 이스케이프합니다. 모든 최신 템플릿 엔진이 그렇게 동작합니다. 저작권 / nbsp / 화살표 등을 가독성 있는 코드(© 대신 ©)로 표시하고 싶다면 Named entities를 사용하세요. 명명 엔티티를 이해하지 못할 수 있는 파이프라인으로 HTML을 보낼 때는 Numeric을 사용하세요. 엄격하게 ASCII만 허용하는 시스템(레거시 메일 서버, 망가진 API)을 대상으로 할 때는 All non-ASCII를 사용하세요.
'는 XML과 HTML5에서는 유효하지만 HTML 4.01에서는 유효하지 않습니다 — 오래된 브라우저는 이를 그대로 ' 문자열로 렌더링합니다. 숫자 참조 '는 어디서나 동작합니다. 디코더는 호환성을 위해 '도 입력으로 받아들입니다.
사용자 콘텐츠를 템플릿용으로 이스케이프하고, 엔티티로 인코딩된 데이터를 디코딩합니다 — 사용하면서 즐거움을 느낄 수 있는 작은 디테일까지 함께.
Minimal은 HTML에서 안전하지 않은 다섯 개의 문자(& < > " ')만 이스케이프합니다 — 일반적인 사용자 생성 콘텐츠에 가장 적합한 기본값입니다. Named는 © / / ♥ 처럼 가독성 좋은 HTML5 엔티티가 존재할 경우 이를 사용합니다. Numeric은 모든 비-ASCII 코드포인트를 &#NN; 형태로 인코딩합니다. All non-ASCII는 출력 가능한 ASCII 범위 밖의 모든 코드포인트를 인코딩하여 레거시 / ASCII 전용 파이프라인에 적합합니다.
디코더는 명명 엔티티(©), 10진 숫자(©), 16진 숫자(©)를 모두 처리합니다. 서러게이트 페어 코드포인트(이모지, 고대 문자)도 UTF-16을 통해 정확히 왕복 변환됩니다.
키 입력마다 출력이 갱신됩니다 — 인코딩 / 디코딩 버튼을 누를 필요가 없습니다. 한 번의 클릭으로 방향을 전환할 수 있고, Swap 버튼은 출력을 다시 입력으로 옮겨 변환을 연이어 적용할 수 있게 해줍니다.
모든 유니코드 코드포인트가 왕복 변환됩니다: 中文, العربية, русский, हिंदी, 🎉, Þorgeir. 인코더는 코드포인트 단위로 순회하므로(charAt이 아닌) 서러게이트 페어가 그대로 유지됩니다.
텍스트는 기기를 떠나지 않습니다. 인코더, 디코더, 명명 엔티티 테이블 모두 로컬에서 JavaScript로 실행됩니다. DevTools → Network 를 열어 외부 요청이 0건임을 직접 확인할 수 있습니다.
순수 JavaScript, 프레임워크 런타임 없음. 콜드 로드 크기는 gzipped 25 KB 미만. 100 KB HTML 문서를 5 ms 미만에 인코딩합니다.
원본 텍스트에서 엔티티-안전 출력까지, 단 4단계.
일반 텍스트나 HTML을 Input 창에 넣으세요. 무엇이든 좋습니다 — 사용자 댓글, 블로그 게시물, 이모지, CJK, RTL 스크립트. 인코더는 코드포인트 단위로 순회하므로 멀티바이트 시퀀스가 그대로 보존됩니다.
Direction을 Encode (텍스트 → 엔티티) 또는 Decode (엔티티 → 텍스트)로 설정합니다. Encode일 때는 모드를 선택하세요: 템플릿용 Minimal, 가독성 있는 엔티티용 Named, 비-ASCII를 &#NN;으로 표현하는 Numeric, ASCII 전용 출력을 위한 All non-ASCII.
출력은 키 입력마다 갱신됩니다. 드롭다운을 바꿔가며 모드를 실시간 비교할 수 있습니다. Swap으로 출력을 다시 입력으로 옮기면 — 왕복 검증(인코드 후 디코드 = 원본)에 유용합니다.
복사 아이콘으로 결과를 클립보드로 보내거나, 다운로드 아이콘으로 output.encode.html / output.decode.txt로 저장하세요. 크기 차이(입력 → 출력의 문자 / 바이트 수)가 인코딩으로 텍스트가 얼마나 늘었는지 줄었는지 정확히 보여줍니다.
프라이버시 우선 브라우저 도구가 임의의 온라인 인코더에 코드를 붙여넣는 것보다 나은 4가지 일반적인 시나리오.
사용자 댓글, 폼 응답, 검색어 — <p>, <li> 또는 속성 안에 들어가는 외부 입력. HTML로 문자열 결합하기 전에 Minimal 모드 인코딩을 거치면, 마크업이 깨지거나 가장 단순한 XSS 페이로드에 당하는 일을 막을 수 있습니다.
일부 API는 이미 엔티티로 이스케이프된 문자열을 반환합니다 (RSS 피드, 일부 CMS export, 스크래핑한 HTML). 붙여넣고 Decode를 누르면 원본 유니코드를 그대로 돌려받습니다. 디코더는 명명, 10진, 16진 엔티티는 물론 서러게이트 페어까지 처리합니다.
<title>, <meta name="description">, <meta property="og:title"> — 모두 특수 문자를 위한 엔티티 이스케이프가 필요합니다. 헤드라인을 한 번 인코딩해 세 곳에 붙여넣으세요.
내부 CMS 콘텐츠, 고객 데이터, NDA로 보호되는 템플릿 — 클라우드 인코더에 붙여넣을 수 없는 모든 것. 브라우저 전용 도구는 모든 바이트를 사용자의 노트북에 그대로 둡니다. DevTools → Network를 열어 아무것도 빠져나가지 않음을 확인하세요.
텍스트는 기기를 절대 떠나지 않습니다. DevTools → Network 를 열면 인코딩이나 디코딩 중 외부 요청이 0건임을 확인할 수 있습니다.
HTML 이스케이프, 엔티티 표, 안전한 템플릿팅에 대한 엄선된 글들.
기본값으로 Minimal을 사용하세요 — HTML 본문 / 속성 컨텍스트를 망가뜨리는 다섯 문자 & < > " '만 이스케이프합니다. 모든 최신 템플릿 엔진이 그렇게 동작합니다. 저작권 / nbsp / 화살표 등을 가독성 있는 코드(© 대신 ©)로 표시하고 싶다면 Named entities를 사용하세요. 명명 엔티티를 이해하지 못할 수 있는 파이프라인으로 HTML을 보낼 때는 Numeric을 사용하세요. 엄격하게 ASCII만 허용하는 시스템(레거시 메일 서버, 망가진 API)을 대상으로 할 때는 All non-ASCII를 사용하세요.
'는 XML과 HTML5에서는 유효하지만 HTML 4.01에서는 유효하지 않습니다 — 오래된 브라우저는 이를 그대로 ' 문자열로 렌더링합니다. 숫자 참조 '는 어디서나 동작합니다. 디코더는 호환성을 위해 '도 입력으로 받아들입니다.
네. 인코더는 코드포인트(UTF-16 코드 단위가 아닌)를 순회하므로 🎉 (U+1F389) 같은 이모지는 인코딩 시 🎉이 되고, 디코딩 시 정확히 원래대로 돌아옵니다. CJK도 마찬가지입니다(numeric 모드에서 中文 → 中文).
HTML 본문과 속성에 한해서는 — 네, Minimal 모드면 안전합니다. URL 컨텍스트(href="...")에서는 URL 인코딩도 함께 필요합니다. 인라인 JavaScript나 CSS의 경우에는 HTML 인코딩이나 URL 인코딩만으로는 충분하지 않습니다 — 해당 컨텍스트를 이해하는 적절한 템플릿 엔진을 사용하세요. 절대 이스케이프되지 않은 사용자 입력을 <script> 블록 안에 붙여넣지 마세요.
아니요. 인코더, 디코더, 명명 엔티티 조회 테이블 모두 사용자 기기에서 JavaScript로 실행됩니다. DevTools → Network 를 열어 보면 인코딩이나 디코딩 중 외부 요청이 0건임을 확인할 수 있습니다. 비밀 정보, 고객 데이터, 내부 템플릿 — 어느 것도 노트북을 떠나지 않습니다.