본문으로 건너뛰기

HTML 엔티티 변환

HTML Entity Encoder

HTML 엔티티를 이스케이프하고 되돌리며 이름·10진수·16진수 표기를 지원합니다.

글자를 HTML 엔티티로 바꾸고 되돌립니다. `&`, `&`, `&` 표기를 고를 수 있고 어디까지 바꿀지도 정할 수 있습니다. 디코딩할 때는 HTML 파싱 명세가 요구하는 Windows-1252 재매핑도 적용해서, `’`이 제어 문자가 아니라 둥근 아포스트로피로 돌아옵니다.

🔒 브라우저 안에서만 처리htmlentityescape
규칙
방향
이스케이프

`&`, `<`, `>`만. 태그 사이에 넣을 때 필요한 전부이고 그 이상은 아닙니다.

표기

텍스트

인코딩된 값

XML이 정한 다섯 개

XML이 미리 정의한 다섯 개의 엔티티.
문자이름10진수16진수
&&amp;&#38;&#x26;
<&lt;&#60;&#x3C;
>&gt;&#62;&#x3E;
"&quot;&#34;&#x22;
'&apos;&#39;&#x27;

DTD 없이 XML이 가진 이름 있는 참조는 이 다섯 개뿐입니다. XML 문서의 나머지는 전부 숫자 참조여야 합니다.

사용 방법

  1. 어디까지 바꿀지 정합니다

    텍스트 내용은 `&`, `<`, `>`만 바꿉니다. 태그 사이에 넣을 때 필요한 전부입니다. 속성 값은 여기에 따옴표 두 종류를 더합니다. 비ASCII 전부는 UTF-8을 못 나르는 파이프라인용이고, 한글은 길이가 일곱 배쯤 됩니다.

  2. 표기를 고릅니다

    이름(`&amp;`)이 읽기 좋습니다. 10진수와 16진수는 숫자 참조라 XML에서도 동작합니다. XML은 DTD 없이는 이름 있는 참조가 다섯 개뿐입니다.

  3. 또는 반대로 되돌립니다

    되돌리기로 바꾸고 엔티티가 잔뜩 든 글을 붙여넣으면 됩니다. 표에 없는 참조는 목록으로 알려 주고, 지우지 않고 쓰인 그대로 둡니다.

자주 묻는 질문

어떤 엔티티가 왜 그대로 남았나요?

HTML5는 이름 있는 참조를 2231개 정의하는데, 여기 표는 그중 골라 담은 부분집합입니다. Latin-1 글자 전부, 문장부호, 그리스 문자, 화살표, 흔한 수학 기호입니다. 그 밖의 것은 조용히 버리는 대신 안내에 이름을 적어 알려 줍니다. 그쪽이 솔직한 실패입니다.

엔티티로 바꾸면 XSS를 막을 수 있나요?

텍스트 내용과 따옴표로 감싼 속성 값에는 맞는 이스케이프이고, 그 밖에서는 부족합니다. `<script>` 블록 안, `javascript:` URL, 따옴표 없는 속성, CSS 문맥에서는 엔티티 이스케이프가 아무 도움이 되지 않습니다. 이스케이프는 그것이 놓이는 문맥에 맞아야 합니다.

`&#146;`은 왜 아포스트로피로 풀리나요?

HTML 파싱 명세가 숫자 참조의 0x80–0x9F 코드포인트를 그 자리의 Windows-1252 글자로 다시 매핑하도록 정하고 있기 때문입니다. 글자 그대로 풀면 보이지 않는 C1 제어 문자가 나오는데, 워드에서 붙여넣은 글을 순진한 디코더로 풀면 그렇게 됩니다.

XML에서 `&nbsp;`를 써도 되나요?

그것을 선언한 DTD가 없다면 못 씁니다. XML이 미리 정의한 이름 있는 참조는 `&amp;` `&lt;` `&gt;` `&quot;` `&apos;` 다섯 개뿐이고, 페이지 아래 표에 그 다섯이 정리돼 있습니다. 나머지는 전부 숫자 참조여야 합니다.

이 도구로 이어지는 것

다음 단계

이 도구의 결과를 그대로 받을 수 있는 도구들입니다.