HTML 엔티티 인코딩·디코딩
텍스트를 이름·10진·16진 엔티티로 HTML용으로 이스케이프하거나 &, é 같은 엔티티를 다시 문자로 바꿉니다.
코드 예제
내 프로젝트에 그대로 복사해서 쓰세요. 모든 예제는 해당 언어의 표준 라이브러리만 사용하므로 설치할 것이 없습니다.
const text = '<p class="x">Tom & Jerry</p>'
const entities = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }
console.log(text.replace(/[&<>"']/g, (char) => entities[char]))기능
텍스트를 HTML용으로 이스케이프하고 HTML 엔티티를 다시 문자로 바꿉니다. 엔티티는 문자를 이름(é), 10진수(é) 또는 16진수(é)로 씁니다.
사용 방법
- 텍스트를 입력하거나 붙여넣거나 텍스트 파일을 놓으세요.
- 인코딩 또는 디코딩을 고르세요. 인코딩에서는 HTML이 마크업으로 읽는 문자만 이스케이프할지 비ASCII 문자도 할지, 이름·10진·16진 중 무엇으로 쓸지 고릅니다.
- 결과를 복사하거나 다운로드하세요.
예시
마크업 이스케이프:
<p class="x">Tom & Jerry</p>는 <p class="x">Tom & Jerry</p>가 됩니다. 모든 비ASCII 문자를 이스케이프하면 café © €는 café © €가 됩니다.
알아두기
- HTML 텍스트와 속성에서 항상 이스케이프해야 하는 문자는
&,<,>,",'입니다. - 아포스트로피는 HTML 4에 이름이 없어서
'로 씁니다. 디코딩은'도 읽습니다. - 이모지처럼 이름이 없는 문자는 문자당 숫자 하나로 씁니다.
- 이름 표는 HTML 4.01의 252개 엔티티를 담고 있습니다. 표에 없는 이름은 디코딩할 때 입력한 그대로 둡니다.
HTML 엔티티란?
엔티티는 문자를 직접 입력하지 않고 HTML에 쓰는 방법입니다. é 같은 이름이나 é(10진), é(16진) 같은 숫자로 씁니다. HTML이 마크업으로 읽기 때문에 텍스트와 속성에서는 다섯 문자(& < > 와 두 종류의 따옴표)를 이스케이프해야 합니다.
자주 묻는 질문
어떤 문자를 이스케이프해야 하나요?
텍스트에서는 &와 <를, 속성값 안에서는 그 값을 감싸는 따옴표를 이스케이프하세요. >와 두 따옴표를 어디서나 이스케이프해도 해롭지 않고 안전한 기본값이며, ‘마크업만’이 그렇게 합니다. 사용자 입력을 이렇게 이스케이프하는 것이 주입된 마크업에 대한 첫 방어선입니다.
아포스트로피가 이름이 아니라 '가 되는 이유는?
HTML 4에는 아포스트로피의 이름 있는 엔티티가 없습니다. '는 XML과 HTML5에 있지만 오래된 소프트웨어는 모르므로 숫자가 안전한 선택입니다. 디코딩은 둘 다 받아들입니다.
이 도구가 내 텍스트를 어딘가로 보내나요?
아니요. 모든 작업은 브라우저에서 이루어집니다. 입력한 내용은 저희 서버로 전송되지 않습니다.