HTML 엔티티 인코더 / 디코더
HTML 엔티티 인코딩·디코딩. 이름·10진수·16진수 엔티티 지원. 무료, 브라우저에서 처리.
- 브라우저에서 처리
- 데이터가 브라우저 밖으로 나가지 않습니다
- 무료 · 회원가입 불필요
WeChat으로 스캔하여 공유
예시·자세한 설명·자주 묻는 질문 실제 출력이 있는 예시, 다른 도구와의 차이, 자주 묻는 질문.
변환 예시
아래 출력은 이 도구의 인코딩 함수, 그리고 브라우저와 같은 HTML 파싱 규칙으로 계산한 결과입니다.
태그가 들어간 인사말
<p>안녕하세요 & 반갑습니다</p> 를 인코딩 하면 다음과 같습니다. 상태 메시지는 Encoded — 15 characters converted. 입니다.
<p>안녕하세요 & 반갑습니다</p>
꺾쇠와 & 는 이름 참조가 되고, 한글 음절은 한 글자마다 10진수 참조 하나가 됩니다. 공백은 그대로 남습니다.
게시판 제목 되돌리기
게시판이나 쇼핑몰 관리 화면에서 내보낸 제목이 <b>공지</b> & 이벤트 처럼 저장되어 있을 때 디코딩 하면 다음 결과를 얻습니다.
<b>공지</b> & 이벤트
출력에 있는 <b> 는 글자일 뿐이며, 도구가 요소를 만들거나 실행하지 않습니다.
16진수 참조
한글 를 디코딩하면 한글 입니다. 16진수 숫자는 Unicode 표기(U+D55C, U+AE00)와 같으므로 문자표와 대조하기 쉽습니다. 인코딩은 같은 글자를 10진수로 한글 처럼 씁니다.
원화 기호
₩12,000 은 ₩12,000 이 됩니다. ₩ 에는 이름 참조가 없어서 숫자로만 쓸 수 있습니다.
한글이 참조 세 개가 되는 경우
같은 「한」이라도 저장된 방식에 따라 결과가 다릅니다. 완성된 음절(NFC)로 저장된 「한」은 코드 포인트 하나(U+D55C)라서 한 하나가 됩니다. 반면 초성·중성·종성의 자모로 분해된 형태(NFD)는 코드 포인트가 셋이므로 참조도 셋이 됩니다.
화면에서는 똑같이 보이는 한 를 인코딩하면 결과는 한 입니다.
Apple의 기술 문서 QA1173에 따르면 macOS의 HFS Plus(Mac OS 확장) 볼륨은 파일 이름을 분해형 Unicode로 저장합니다. 그런 파일 이름을 복사해 붙여 넣었을 때 참조 개수가 글자 수보다 많다면 이 차이를 의심해 볼 수 있습니다. 브라우저는 두 형태를 같은 글자로 그리므로 화면만으로는 구별하기 어렵습니다.
디코딩 규칙
디코딩은 입력을 브라우저 자신의 HTML 파서에 넘겨(textarea 의 innerHTML 에 넣은 뒤 텍스트로 다시 읽음) 문자 참조만 바꿉니다.
- 이름 참조, 10진수 참조, 16진수 참조를 모두 읽습니다.
- 일부 예전 이름은 세미콜론 없이도 인식됩니다. 예를 들어
© 2024는© 2024가 됩니다. 영어 상태 메시지는 세미콜론으로 끝나는 참조만 세므로 실제로 바뀐 수보다 작게 나올 수 있습니다. €부터Ÿ까지는 HTML 표준에 따라 Windows-1252로 해석되어€은€가 됩니다.- 한 번에 한 단계만 되돌립니다.
&lt;는<가 되며<가 되지는 않습니다.
UTF-8로 저장한 페이지라면 한글을 엔티티로 바꿀 필요가 없습니다. W3C 문서 「Using character escapes in markup and CSS」도 페이지에는 UTF-8을 쓰고 일반 문자는 이스케이프하지 말라고 권합니다. 꼭 이스케이프할 것은 <, >, &, 그리고 속성값 안에서 바깥과 같은 종류의 따옴표입니다.
제한
- 인코딩 결과는 HTML 본문과 따옴표로 감싼 속성값에만 사용하세요.
<script>안, 인라인 이벤트 핸들러, CSS, URL에는 다른 이스케이프 규칙이 필요합니다. JavaScript·JSON 문자열은 문자열 이스케이프 변환기, 쿼리 매개변수는 URL 인코드 / 디코드를 사용하세요. - 인코딩은
©같은 이름 참조를 출력하지 않습니다. ASCII 밖의 문자는 모두 10진수 참조가 되고, 이모지도 한 글자에 참조 하나입니다. - 상태 메시지는 모든 언어 페이지에서 영어로 표시됩니다.
자주 사용하는 HTML 엔티티
| 문자 | 이름 참조 | 10진수 | 설명 |
|---|---|---|---|
& | & | & | 앰퍼샌드 |
< | < | < | 부등호(작음) |
> | > | > | 부등호(큼) |
" | " | " | 큰따옴표 |
' | ' | ' | 작은따옴표 |
© | © | © | 저작권 기호 |
₩ | 없음 | ₩ | 원화 기호 |
· | · | · | 가운뎃점 |
FAQ
HTML 엔티티란 무엇입니까?
HTML 엔티티(문자 참조)는 문자 하나를 나타내는 코드입니다. 예를 들어 < 를 < 로 쓰면 브라우저가 태그의 시작으로 읽지 않습니다. © 는 © 또는 © 로 쓸 수 있습니다.
언제 인코딩해야 합니까? XSS를 막을 수 있습니까?
사용자가 입력한 문자열이나 코드 예시를 HTML 본문 또는 따옴표로 감싼 속성값에 넣을 때 인코딩합니다. 그 자리에서 <, >, &, 따옴표를 이스케이프하면 화면 깨짐과 HTML 삽입(XSS)을 막을 수 있습니다. 다만 결과는 HTML 전용입니다. JavaScript 문자열, 이벤트 핸들러, CSS, URL에는 각 문맥에 맞는 이스케이프가 필요합니다.
이름·10진수·16진수 참조는 무엇이 다릅니까?
이름 참조는 HTML 이름 목록에 있는 이름(&)을, 10진수 참조는 Unicode 코드 포인트의 10진수 값(&)을, 16진수 참조는 16진수 값(&)을 씁니다. 세 가지 모두 같은 문자를 뜻하며 디코딩은 셋 다 읽습니다. 인코딩은 &, <, >, 큰따옴표에만 이름을 쓰고 나머지 문자는 10진수 참조로 출력합니다.
데이터가 서버로 전송됩니까?
아니요. 변환은 브라우저 탭 안에서 이루어지며, 입력한 문자열을 서버로 보내거나 브라우저 저장소에 저장하지 않습니다. 페이지의 방문 통계에는 사용 이벤트(도구 이름과 바꾼 방향)만 기록되고 문자열은 포함되지 않습니다.
원화 기호 ₩ 는 엔티티로 어떻게 씁니까?
₩(U+20A9)에는 HTML 이름 참조가 없습니다. 이 도구로 인코딩하면 10진수 참조 ₩ 가 나오며, 16진수로는 ₩ 입니다. 한국어 Windows 글꼴에서 ₩ 모양으로 보이는 백슬래시(U+005C)는 ASCII 문자라서 인코딩해도 바뀌지 않습니다.