유니 코드 인식 브라우저 시대에도 HTML의 명명 된 엔티티가 여전히 필요합니까?

StackOverflow https://stackoverflow.com/questions/25132

문제

저는 지난 몇 년 동안 많은 PHP 프로그래밍을했는데 저를 계속 짜증나게하는 것은 유니 코드와 멀티 바이트 문자열에 대한 약한 지원입니다 (확실히 기본적으로는 없습니다). 예를 들어, "htmlentities"는 PHP 세계에서 많이 사용되는 기능으로 보이며 모든 문자열을 지역화 할 수 있도록 노력하고 데이터베이스에 UTF-8 만 저장하고 UTF 만 제공하는 데 노력을 기울 였을 때 절대적으로 성가신 것 같습니다. -8 개의 웹 페이지 등. 갑자기 데이터베이스와 브라우저 사이 어딘가에 모든 바이트가 문자 인 척하고 모든 것을 엉망으로 만드는 절망적으로 순진한 기능이 있습니다.

저는 이런 종류의 기능을 그냥 버리는 것을 사랑 할 것입니다. 완전히 불필요한 것 같습니다. 요즘에도 '& auml;'을 써야합니까? 'ä'대신에? 적어도 내 Firefox는 적절한 인코딩으로 제공되는 한 가장 이상한 아시아 글리프도 표시 할 수있어서 행복해 보입니다.

업데이트 : 더 정확하게 말하면 HTML 태그를 표시하는 것 외에 ( "<"의 "<"에서와 같이)에 필요한 명명 된 엔티티입니다.

업데이트 2 :

@Konrad : 아니요, 명명 된 엔티티가 필요하지 않다는 말씀인가요?

@Ross :하지만 입력 할 때 사용자 입력을 삭제하여 출력 로직을 이러한 문제로부터 벗어나게하는 것이 더 낫지 않을까요? (물론 입력에 대한 신뢰할 수있는 삭제가 가능하다고 가정하면, 그렇지 않은 경우 출력에있을 수 있습니까?)

도움이 되었습니까?

해결책

'실제'XHTML (즉, 더 자주 사용되는 application/xhtml+xml 호환성 모드가 아닌 text/html를 사용하는)의 명명 된 엔티티는 권장되지 않습니다.XML 자체에 정의 된 5 개 (&lt;, &gt;, &amp;, &quot;, &apos;)를 제외하고 모두 사용중인 특정 DocType의 DTD에 정의되어야합니다.이는 브라우저가 해당 DocType을 명시 적으로 지원해야 함을 의미합니다.반면에 번호가 매겨진 엔티티는 올바른 유니 코드 문자를 얻기 위해 조회 테이블 만 필요합니다.

요즘 엔터티가 필요한지 여부에 관해서는 최신 브라우저가 UTF-8을 지원할 것으로 기대할 수 있습니다.따라서 데이터베이스, 마크 업 및 웹 서버가 모두이를 제공하는 데 동의한다는 것을 보장 할 수있는 한 엔티티를 버립니다.

다른 팁

XHTML을 사용하는 경우 실제로 명명 된 엔티티를 사용하지 않는 것이 좋습니다 ([인용 필요]).일부 브라우저 (Firefox…)는이를 XML로 구문 분석 할 때 (일반적으로 그렇지 않음) DTD 파일을 읽지 않으므로 엔티티를 처리 할 수 없습니다.

어쨌든 UTF-8을 인코딩으로 사용하는 것이 가장 좋은 방법이므로 다른 방법으로 할 수있는 강력한 이유가 없다면 문서 작성자에게 문서를 처리 할 수있을뿐만 아니라 좋은 기능을 제공하는 적절한 편집기가 필요합니다.다이버 글리프를 입력하는 방법.대부분의 필요한 글리프는 "alt"키를 통해 도달 할 수 있지만 Windows에는이 기능이 없기 때문에 OS X에는 실제로이 문제가 없습니다. <시간> <인용구>

@Konrad : 아니요, 명명 된 엔티티가 필요하지 않다는 말씀인가요?

정확합니다.물론 어리석은 제한이 있지 않는 한, 예를 들어UTF-8 등에서 질식하는 레거시 데이터베이스 드라이버

Safari는 일부 글리프에 문제가있는 것 같지만 다른 글리프에는 문제가없는 것 같습니다. 필요하지 않을 수도 있지만 그렇게하는 것이 가장 좋습니다. 물론 이것은 내 의견이며 내자신의 관찰.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top