언제 HTML 엔티티를 사용해야합니까?


115

이것은 한동안 나를 혼란스럽게했습니다. 웹 개발에서 사실상의 표준으로 UTF-8이 등장함에 따라 어떤 상황에서 HTML 엔티티를 사용해야하는지, 어떤 상황에서 UTF-8 문자를 사용해야하는지 잘 모르겠습니다. 예를 들면

  • 전각 대시 (–, &emdash;)
  • 앰퍼샌드 (&, &)
  • 3/4 분수 (¾, ¾)

이 문제에 대해 조명 해주십시오. 감사하겠습니다.


참고로 PHP의 htmlentities ()는 무엇을할까요?
Joe Phillips

답변과 의견을 읽으면 아직 하나 또는 다른 쪽을 선호하는 보편적 인 규칙이없는 것 같으며 대답은 여전히 다릅니다 .
Majid Fouladpour 2011 년

답변:


76

편집기가 유니 코드를 지원하는 경우 일반적으로 HTML 문자 엔티티를 사용할 필요가 없습니다. 엔티티는 다음과 같은 경우에 유용 할 수 있습니다.

  • 키보드가 입력해야하는 문자를 지원하지 않습니다. 예를 들어, 많은 키보드에는 em- 대시 나 저작권 기호가 없습니다.
  • 귀하의 편집기는 유니 코드를 지원하지 않습니다 (몇 년 전에는 매우 일반적 이었지만 현재는 아닐 것입니다).
  • 무슨 일이 일어나고 있는지 소스에서 명시 적으로 만들고 싶습니다. 예를 들어,  코드는 해당 공백 문자보다 명확합니다.
  • 당신은 HTML 특수 문자가 좋아 탈출해야 할 <, &또는 ".

1
매우 유용합니다. 감사. 특이한 캐릭터를 얻기 위해 유용한 프로그램을 사용합니다. popchar라고하며 Ergonis에서 제작했지만 OS X 전용입니다.
allesklar

3
참고 : &nbsp;Firefox가 U + 00A0을 형식에서 U + 0020으로 변환하기 때문에 Wikipedia는 여전히 실제 공백 문자 대신에 요구 합니다. 따라서이 경우 엔티티를 사용하는 것이 Firefox 사용자가 소스를 편집 할 때마다 소스가 엉망이되지 않도록하는 유일한 방법입니다.
Joey

2
좋은 요약이지만 마지막 요점과 관련하여 <종종 이스케이프가 필요하지 않으며 절대로 필요 하지 않습니다 >( "드물게 속성 값 내부에서만 이스케이프가 필요함).
Jukka K. Korpela

유지해야하는 또 다른 이유 & nbsp; HTML 페이지에 여러 공백을 표시 할 수 있습니다.
zylstra

따라서 &amp;항상 &? 대신 사용해야합니다 . 그 이유가 있습니까?
Prometheus

116

받은 댓글을 바탕으로 좀 더 살펴 보았습니다. 현재 가장 좋은 방법은 HTML 엔티티를 사용하지 않고 대신 실제 UTF-8 문자를 사용하는 것 같습니다 . 나열된 이유는 다음과 같습니다.

  1. UTF-8 인코딩은 문자의 의미를 이해하고 입력하는 방법을 아는 사용자가 읽고 편집하기가 더 쉽습니다.
  2. UTF-8 인코딩은 이해하지 못하는 사람들을위한 HTML 엔터티 인코딩만큼 이해하기 어렵지만 10 진수 또는 16 진수 인코딩을 이해하기 어렵 기보다는 특수 문자로 렌더링하는 이점이 있습니다.

페이지의 인코딩이 UTF-8로 올바르게 설정되어 있다면 HTML 엔티티 대신 실제 문자를 사용해야합니다. 이 주제에 대한 여러 문서를 읽었지만 가장 도움이 된 것은 다음과 같습니다.

로부터 문자 인코딩의 비밀 : UTF-8 기사 :

Wikipedia는 원래 ISO-8859-1을 사용했지만 외국어를 지원하기에는 너무 번거로워 졌을 때 UTF-8로 전환 한 애플리케이션에 대한 훌륭한 사례 연구입니다. 봇은 이제 실제로 기사를 살펴보고 사용자 편의성과 검색 가능성을 위해 캐릭터 엔티티를 해당 실제 캐릭터로 변환 합니다.

이 기사는 또한 중국어 인코딩과 관련된 좋은 예를 제공합니다. 게으름을위한 축약 된 예는 다음과 같습니다.

UTF-8 :

這兩個字是甚麼意思

HTML 엔티티 :

&#36889;&#20841;&#20491;&#23383;&#26159;&#29978;&#40636;&#24847;&#24605;

UTF-8 및 HTML 엔터티 인코딩은 모두 나에게 의미가 없지만 적어도 UTF-8 인코딩은 외국어로 인식 할 수 있으며 편집 상자에서 제대로 렌더링됩니다. 이 기사에서는 HTML 엔티티 인코딩 버전에 대해 다음과 같이 설명합니다.

실제로 캐릭터 엔터티가 무엇인지 아는 사람들에게는 매우 불편하며, 그렇지 않은 가난한 사용자에게는 전혀 이해할 수 없습니다! 심지어 & theta; HTML 학습에 관심이없는 사용자는 머리를 긁적입니다. 반면에 편집 상자에 θ가 표시되면 해당 문자를 직접 작성하는 방법을 모르더라도 특수 문자라는 것을 알고 그에 따라 처리합니다.

다른 사람들이 언급했듯이 예약 된 XML 문자 (앰퍼샌드,보다 작음,보다 큼)에 대해 HTML 엔터티를 사용해야합니다.


이 답변은 엄청난 도움이됩니다. 그러나 명확히하기 위해, 내 자신의 이해를 위해 : &entity;선언 된 UTF-8 문자 집합을 사용 하여 HTML 문서 내에서 구문을 사용하는 데 위험하거나 유효하지 않은 것은 없습니다 . 맞습니까? 나열한 이유 때문에 일반 UTF-8 문자가 더 좋지만 동일한 문서에서 일부 HTML 엔티티가 함께있는 데 여전히 문제가 없습니까?
Jacob Ford

@JacobFord 맞습니다. HTML 엔티티를 UTF-8 문자와 혼합하는 것은 위험하거나 유효하지 않으며 소스를 읽는 사람에게 잠재적으로 혼란을 줄 수 있습니다.
William Brendel

5

시각적으로 쉽게 혼동되는 문자에는 UTF-8을 사용하지 않습니다. 예를 들어 emdash를 마이너스와 구별하는 것은 어렵습니다. 특히 비 분리 공백과 공백을 구분하는 것은 어렵습니다. 이러한 캐릭터의 경우 반드시 엔티티를 사용하십시오.

시각적으로 쉽게 이해할 수있는 문자 (예 : 위의 중국어 예)의 경우 원하는 경우 UTF-8을 사용하십시오.


5

개인적으로 나는 오랫동안 utf-8에서 모든 것을 수행하지만, html 페이지에서는 항상 앰퍼샌드 (&),보다 큼 (>) 및보다 작은 (<) 문자를 동등한 엔티티로 변환해야합니다. & amp ;, & gt; 및 & lt;

또한 utf-8 텍스트를 사용하여 프로그래밍을하려는 경우 몇 가지주의해야 할 사항이 있습니다.

  • XML은 엔터티를 사용할 때 유효성을 검사하기 위해 추가 줄이 필요합니다.
  • 일부 라이브러리는 utf-8과 잘 어울리지 않습니다. 예를 들어 일부 Linux 배포판의 PHP는 정규식 라이브러리에서 utf-8에 대한 완전한 지원을 중단했습니다.
  • 단일 엔티티가 많은 문자를 사용하기 때문에 html 엔티티를 사용하는 텍스트의 문자 수를 제한하는 것이 더 어렵습니다. 또한 항상 엔티티를 절반으로 줄일 위험이 있습니다.

매우 사소한 점이지만보다 큼 (>)을 인코딩 할 필요는 없으며보다 작게 (<) 만 인코딩 할 수 있습니다.
Codemonkey 2018 년

4

엔터티는 인코딩을 올바르게 이해하지 못하는 뇌사 클라이언트와의 호환성을 구매할 수 있습니다. 나는 그것이 현재의 브라우저를 포함한다고 생각하지 않지만 다른 종류의 프로그램이 당신을 공격 할 수 있는지 결코 알지 못합니다.

더 유용하지만, 그 HTML 엔티티가 자신의 오류에서 당신을 보호 할 수 있습니다 : 서버에 뭔가를 잘못 구성하고있는 페이지를 제공 끝날 경우 HTTP 헤더는 말한다 그 ISO-8859-1META는 말한다 태그 UTF-8, 적어도 당신 & mdash; ES 항상 작동합니다.


5
하지만 반대의 주장을 할 수 있습니다. &mdash헤더가 잘못 구성되어 있어도 es가 올바르게 표시되면 문제가 있는지 감지하기가 더 어려워집니다 .
Pekka 2013 년

4

HTML 엔터티는 (여러) 다른 인코딩을 사용하여 페이지에 (동적으로) 포함될 콘텐츠를 생성하려는 경우에 유용합니다. 예를 들어 ISO-8859-1 및 UTF-8 인코딩 웹 페이지에 모두 포함 된 화이트 라벨 콘텐츠가 있습니다.

UTF-8과의 문자 집합 변환이 그렇게 큰 불안정한 문제가 아니라면 (항상 일부 문자와 제대로 변환되지 않는 일부 도구를 우연히 발견 함) UTF-8로 표준화하는 것이 좋습니다.


2

페이지가 utf-8로 올바르게 인코딩 된 경우 html 엔티티가 필요하지 않으며 원하는 문자를 직접 사용하십시오.


3
예약 된 문자를 인코딩하려면 여전히 필요하다고 생각합니다.
rmeador

@rmeador-동의합니다.
Otávio Décio

2

이전의 모든 답변이 나에게 의미가 있습니다.

또한 사용하려는 편집기와 문서 언어에 따라 다릅니다. 편집기의 최소 요구 사항은 문서 언어를 지원하는 것입니다. 즉, 텍스트가 일본어로되어있는 경우 텍스트를 표시하지 않는 편집기 (즉, 문서 자체에 대한 엔티티가 없음)를 사용하지 않도록주의하십시오. 영어 인 경우 이전 vim과 유사한 편집기를 사용할 수 있으며 상대적으로 드물게 & copy; 그리고 친구들. 물론입니다. & gt; > 및 기타 HTML 특별 광고에는 여전히 이스케이프가 필요합니다. 그러나 다른 라틴 -1 언어 (독일어, 프랑스어 등)에서도 ä를 쓰는 것은 당신이 어디에 있는지 아는 데있어 고통 스럽습니다.

또한 저는 개인적으로 보이지 않는 문자와 표준 ASCII와 비슷해 보이므로 쉽게 혼동되는 항목을 작성합니다. 예를 들어, u1173 (일부 문자 세트에서 대시처럼 보임) 또는 u1175가 있는데, 이는 세로 막대처럼 보입니다. 어떤 경우에도 엔티티를 사용합니다.


& gt; >에는 필요하지 않습니다.>를 사용할 수 있습니다. & lt; 하지만 <에는 필요합니다.
Codemonkey 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.