HTML 엔티티 인코딩 / 디코딩
HTML용 텍스트 이스케이프 또는 & 형식 엔티티 복원
로컬 실행
loading…
이 도구에 대해
HTML에 안전하게 넣을 수 있도록 텍스트를 이스케이프하거나(& 는 &amp; 가 되고 < 는 &lt; 가 됩니다), 엔티티투성이 텍스트를 읽을 수 있는 문자로 되돌립니다. 이름 있는 엔티티(&rarr;), 십진(&#169;), 십육진(&#xA9;) 숫자 참조를 모두 다룹니다.
인코딩에는 두 수준이 있습니다. HTML 구조를 깨뜨리는 필수 문자 다섯 개(& < > " ')만 이스케이프하는 방식으로, 올바름을 위해서는 이것으로 충분합니다. 또는 모든 비 ASCII 문자를 이스케이프하는 방식으로, 여러분과 페이지 사이의 도구 체인 어딘가에서 UTF-8이 망가질 때 유용합니다. 숫자 전용 모드는 이름 있는 엔티티를 건너뛰어, 미리 정의된 다섯 개만 보장하는 엄격한 XML 파서와의 호환성을 극대화합니다.
디코더는 일상적으로 더 많이 쓰이는 쪽입니다. 스크레이핑한 스니펫이나 &#x27; 로 가득한 API 응답을 붙여넣으면 깨끗한 텍스트를 얻습니다. 알 수 없는 엔티티 이름은 추측되는 대신 그대로 통과합니다.
자주 묻는 질문
- HTML에서 어떤 문자를 반드시 이스케이프해야 하나요?
- 텍스트 내용에서는 & 와 <. 속성 값에서는 속성을 감싸는 따옴표 문자(" 또는 ')도 추가로. > 를 이스케이프하는 것은 관례일 뿐 엄밀히 필수는 아닙니다. 그 밖의 모든 것은 UTF-8 문서에 그대로 쓸 수 있습니다.
- 엔티티 인코딩은 XSS 방어책인가요?
- 구조 문자 다섯 개를 이스케이프하는 것이 HTML 컨텍스트 출력 인코딩의 핵심인 것은 맞습니다. 다만 HTML 텍스트와 속성 컨텍스트에 한해서입니다. URL, JavaScript 문자열, CSS는 각자의 컨텍스트별 인코딩이 필요하며, 엔티티 이스케이프만으로는 그곳에서의 임의 주입이 안전해지지 않습니다.
- 이름 있는 엔티티와 숫자 엔티티, 어느 쪽을 출력해야 하나요?
- 숫자 참조(&#xE9;)는 모든 HTML과 XML 파서에서 동작합니다. 이름 있는 엔티티는 더 읽기 좋지만 XML은 다섯 개만 미리 정의하므로, &eacute; 는 엄격한 XML/XHTML 파이프라인을 깨뜨립니다. 망설여진다면 숫자로 하세요.
- 왜 제 데이터에 &amp;#39; (이중 인코딩)가 보이나요?
- 두 계층이 각각 한 번씩 인코딩한 것입니다. 첫 번째 인코딩의 & 가 두 번째 처리에서 다시 이스케이프됐습니다. 여기서 두 번 디코딩해 텍스트를 복구한 뒤, 인코딩하지 말아야 할 계층을 찾아 고치세요.