HTML Entity Encoder & Decoder

특수문자를 HTML entity로 인코딩하거나 entity를 일반 텍스트로 디코딩하세요. Named, decimal, hex 형식 중 선택할 수 있어요. 모든 처리가 브라우저에서 진행되므로 서버로 데이터가 전송되지 않습니다.

작동 방식: 텍스트를 붙여넣거나 입력한 후 인코드 또는 디코드 모드를 선택하고 entity 형식을 고르세요. 출력이 즉시 업데이트돼요. 가독성을 위해서는 named entities를, 최대 호환성을 위해서는 decimal 또는 hex를 사용하세요. 데이터는 브라우저를 벗어나지 않습니다.

98 32 개 발견됨
문자NamedDecimalHex설명
&&&&Ampersand
<&lt;&#60;&#x3C;Less than
>&gt;&#62;&#x3E;Greater than
"&quot;&#34;&#x22;Double quote
'&#39;&#39;&#x27;Single quote
&nbsp;&#160;&#xA0;Non-breaking space
©&copy;&#169;&#xA9;Copyright
®&reg;&#174;&#xAE;Registered
&trade;&#8482;&#x2122;Trademark
&mdash;&#8212;&#x2014;Em dash
&euro;&#8364;&#x20AC;Euro

HTML Entities란 무엇인가요?

HTML entities는 HTML에서 예약된 의미를 가지거나 소스 코드에 직접 입력할 수 없는 문자를 표현하기 위한 특수 시퀀스예요. 가장 중요한 예는 ampersand(&)인데, 모든 entity의 시작을 나타내므로 리터럴 텍스트로 나타날 때는 &amp;로 작성해야 합니다. 마찬가지로 less-than 기호(<)는 HTML 태그 시작으로 잘못 해석되는 것을 방지하기 위해 &lt;로 작성해야 해요. Entity는 세 가지 형식을 따릅니다: named(&amp;), decimal(&#38;), hexadecimal(&#x26;). 셋 다 같은 문자를 나타내며, 선택은 가독성 선호도와 대상 파서 호환성에 따라 달라집니다.

왜 HTML 문자를 인코딩해야 할까요?

HTML 문자 인코딩은 두 가지 이유로 필수적이에요: 정확성과 보안입니다. 정확성 측면에서 <, >, & 같은 문자는 HTML 구문의 일부거든요. 이들이 이스케이프되지 않은 상태로 텍스트 내용에 나타나면 브라우저가 마크업으로 잘못 해석해서 페이지 레이아웃이 깨질 수 있어요. 보안 측면에서는 사용자가 제공한 입력을 HTML에 렌더링하기 전에 인코딩하지 않으면 Cross-Site Scripting(XSS) 공격의 원인이 됩니다. 이는 가장 흔한 웹 취약점 중 하나에요. 공격자는 폼 필드나 URL 매개변수를 통해 <script> 태그를 주입할 수 있고, 서버가 그 입력을 인코딩하지 않고 렌더링하면 악성 스크립트가 모든 방문자의 브라우저에서 실행돼요. 항상 출력을 인코딩하고 원본 입력을 신뢰하지 마세요.

Named vs Decimal vs Hex Entities

&copy;, &euro;, &mdash;처럼 named entities는 인간이 읽을 수 있고 모든 최신 브라우저에서 광범위하게 지원돼요. Decimal entities는 Unicode code point를 10진법으로 사용하고(©는 &#169;), hexadecimal entities는 16진법을 사용합니다(같은 문자는 &#xA9;). Named entities는 정의된 Unicode 문자 부분집합에만 존재하므로 그 외의 것은 decimal 또는 hex를 사용해야 해요. Hex 표기법은 Unicode 문서와 자연스럽게 맞아떨어져요(예: U+0026는 &#x26;로 매핑됨). HTML attributes에서는 항상 double quotes를 &quot; 또는 &#34;로 인코딩해서 attribute injection을 방지하세요.

HTML Entity 모범 사례

  • XSS 공격을 방지하려면 HTML에 렌더링하기 전에 항상 사용자 입력을 인코딩하세요
  • 다른 문자를 인코딩하기 전에 &를 &amp;로 먼저 인코딩해서 double-encoding을 피하세요
  • &copy;, &reg;, &trade; 같은 일반적인 기호는 named entities로 사용해서 가독성을 높이세요
  • U+007F 이상의 모든 Unicode 문자는 legacy parsers를 대상으로 할 때 decimal 또는 hex entities를 사용하세요
  • HTML attributes 내에서 quotes("과 ')를 모두 인코딩해서 attribute 손상을 방지하세요
  • 최대 호환성을 위해 "모두 인코드"를 활성화해서 모든 non-ASCII 문자를 강제로 인코딩하세요
  • 텍스트 로직을 처리하기 전에 entities를 디코딩하세요. 원본 entity 문자열로 작업하지 마세요
  • &nbsp;(non-breaking space)는 원치 않는 줄바꿈을 방지하지만 대량으로 일반 공백을 대체해서는 안 됩니다