etc./StackOverFlow

<meta charset="utf-8">대<meta http-equiv="Content-Type">

청렴결백한 만능 재주꾼 2022. 2. 7. 06:19
반응형

질문자 :CuriousMind


HTML5 Doctype 에 대한 charset을 정의하려면 어떤 표기법을 사용해야 합니까?

  1. 짧은:

     <meta charset="utf-8" />
  2. 긴:

     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


HTML5에서는 동일합니다. 기억하고 입력하기 쉽기 때문에 더 짧은 것을 사용하십시오. 브라우저 지원은 이전 버전과의 호환성을 위해 설계되었기 때문에 괜찮습니다.


Quentin

두 가지 형태의 메타 문자 집합 선언은 동일하며 모든 브라우저에서 동일하게 작동해야 합니다. 그러나 웹 파일의 문자 집합을 UTF-8로 선언할 때 기억해야 할 몇 가지 사항이 있습니다.

  1. 바이트 순서 표시 (BOM) 없이 UTF-8 인코딩으로 파일을 저장합니다.
  2. (위와 같이) 메타 문자 집합을 사용하여 HTML 파일의 인코딩을 선언하십시오.
  3. 웹 서버 Content-Type HTTP 헤더에서 UTF-8 인코딩을 선언하여 파일을 제공해야 합니다.

Apache 서버는 기본적으로 ISO-8859-1의 파일을 제공하도록 구성되어 있으므로 .htaccess 파일에 다음 줄을 추가해야 합니다.

 AddDefaultCharset UTF-8

이렇게 하면 Content-Type 응답 헤더에서 UTF-8 인코딩을 선언하는 파일을 제공하도록 Apache를 구성하지만, 시작하려면 파일을 UTF-8(BOM 제외)로 저장 해야 합니다.

메모장은 BOM이 없으면 파일을 UTF-8로 저장할 수 없습니다. Notepad++ 가 가능한 무료 편집기입니다. 프로그램 메뉴 표시줄에서 "인코딩 > BOM 없이 UTF-8로 인코딩"을 선택합니다. "인코딩 > BOM 없이 UTF-8로 변환"을 사용하여 파일을 열고 UTF-8로 다시 저장할 수도 있습니다.

Wikipedia에서 바이트 순서 표시(BOM) 에 대해 자세히 알아보십시오.


CodeBoy

짧은 것을 사용해야 하는 또 다른 이유는 마크업에서 문자 집합을 지정할 수 있는 다른 인스턴스와 일치하기 때문입니다. 예를 들어:

 <script type="javascript" charset="UTF-8" src="/script.js"></script> <p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>

일관성은 오류를 줄이고 코드를 더 읽기 쉽게 만드는 데 도움이 됩니다.

charset 속성은 대소문자를 구분하지 않습니다. UTF-8 또는 utf-8을 사용할 수 있지만 UTF-8이 더 명확하고 읽기 쉽고 정확합니다.

또한 메타 문자 집합 속성이나 페이지 헤더에 UTF-8 이외의 값을 사용할 이유가 전혀 없습니다. UTF-8은 1999년 HTML4 이후 웹 문서의 기본 인코딩이며 최신 웹 페이지를 만드는 유일한 실용적인 방법입니다.

또한 UTF-8에서 HTML 엔터티를 사용해서는 안 됩니다. 저작권 기호와 같은 문자는 직접 입력해야 합니다. 사용해야 하는 유일한 엔터티는 5개의 예약된 마크업 문자(보다 작음, 보다 큼, 앰퍼샌드, 소수, 이중 소수)에 대한 것입니다. 엔티티에는 HTML 파서가 필요합니다. HTML 파서는 앞으로 항상 사용하고 싶지 않을 수 있으며, 오류가 발생하고, 코드 가독성이 떨어지며, 파일 크기가 증가하고, 사용한 엔티티에 따라 다양한 브라우저에서 때때로 잘못 디코딩됩니다. 저작권, 상표, 열린 따옴표, 닫는 따옴표, 아포스트로피, em 대시, 엔 대시, 글머리 기호, 유로 및 콘텐츠에서 만나는 기타 문자를 입력/삽입하고 코드에서 실제 문자를 사용하는 방법을 알아보세요. Mac에는 키보드 시스템 환경설정에서 켤 수 있는 문자 뷰어가 있으며 필요한 문자를 찾아서 끌어다 놓거나 일치하는 키보드 뷰어를 사용하여 입력할 키를 확인할 수 있습니다. 예를 들어 상표는 Option+2입니다. UTF-8에는 모든 인간 언어의 모든 문자와 기호가 포함되어 있습니다. 따라서 엠 대시 대신 -- 사용에 대한 변명의 여지가 없습니다. 구두점과 타이포그래피의 규칙도 배우는 것은 나쁜 생각이 아닙니다. 예를 들어 마침표는 바깥쪽이 아니라 가까운 따옴표 안에 들어간다는 것을 알면 됩니다.

콘텐츠 유형 및 인코딩과 같은 항목에 태그를 사용하는 것은 매우 아이러니합니다. 이러한 항목을 알지 못하면 파일을 구문 분석하여 메타 태그의 값을 얻을 수 없기 때문입니다.

아니요, 사실이 아닙니다. 브라우저는 파일을 브라우저의 기본 인코딩(UTF-8 또는 ISO-8859-1)으로 구문 분석하기 시작합니다. US-ASCII는 ISO-8859-1 UTF-8의 하위 집합이므로 브라우저는 어느 쪽이든 잘 읽을 수 있습니다. 동일합니다. 브라우저가 meta charset 태그를 발견할 때 인코딩이 브라우저에서 이미 사용 중인 것과 다른 경우 브라우저는 지정된 인코딩으로 페이지를 다시 로드합니다. 이것이 우리가 맨 위에, head 태그 바로 뒤에, 심지어 제목보다 먼저 meta charset 태그를 두는 이유입니다. 그렇게 하면 제목에 UTF-8 문자를 사용할 수 있습니다.

BOM 없이 UTF-8 인코딩으로 파일을 저장해야 합니다.

그것은 엄밀히 말하면 사실이 아닙니다. 문서에 US-ASCII 문자만 있는 경우 하위 집합이기 때문에 US-ASCII로 저장하고 UTF-8로 제공할 수 있습니다. 그러나 유니코드 문자가 있는 경우 맞습니다. BOM 없이 UTF-8로 저장해야 합니다.

파일을 UTF-8로 저장할 수 있는 좋은 텍스트 편집기를 원한다면 메모장++을 추천합니다.

Mac에서는 Mac App Store의 Bare Bones TextWrangler(무료) 또는 Mac App Store의 Bare Bones BBEdit를 $39.99에 사용하세요. 두 앱 모두 문서 창 하단에 문서 인코딩을 지정하는 메뉴가 있으며 "UTF-8 no BOM"을 쉽게 선택할 수 있습니다. 물론 환경 설정에서 새 문서의 기본값으로 설정할 수 있습니다.

그러나 웹 서버가 권장되는 HTTP 헤더의 인코딩을 제공하는 경우 [메타 태그] 둘 다 필요하지 않습니다.

그것은 잘못된 것입니다. 물론 HTTP 헤더에서 인코딩을 설정해야 하지만 메타 문자 집합 속성에서도 설정해야 페이지가 사용자에 의해 브라우저에서 로컬 저장소로 저장되고 나중에 다시 열 수 있습니다. 이 경우 표시될 인코딩의 유일한 표시는 meta charset 속성입니다. 같은 이유로 기본 태그도 설정해야 합니다... 서버에서는 기본 태그가 필요하지 않지만 로컬 저장소에서 열 때 기본 태그를 사용하면 페이지가 서버에 있는 것처럼 작동할 수 있습니다. 자산이 제자리에 있고 끊어진 링크가 없습니다.

AddDefaultCharset UTF-8

또는 다음과 같이 특정 파일 형식의 인코딩을 변경할 수 있습니다.

 AddType text/html;charset=utf-8 html

UTF-8 및 Latin-1(ISO-8859-1) 파일을 모두 제공하기 위한 팁은 UTF-8 파일에 "텍스트" 확장자를 지정하고 라틴-1 파일에 "txt"를 지정하는 것입니다.

 AddType text/plain;charset=iso-8859-1 txt AddType text/plain;charset=utf-8 text

마지막으로, 도움이 되지 않고 상처를 줄 수 있는 레거시 DOS 또는 (클래식) Mac 라인 끝이 아닌 Unix 라인 끝으로 문서를 저장하는 것을 고려하십시오. 특히 이러한 레거시 시스템에서 점점 멀어질수록 더욱 그렇습니다. 유효한 HTML5, UTF-8 인코딩 및 Unix 줄 끝이 있는 HTML 문서는 잘 수행된 작업입니다. 많은 컨텍스트에서 해당 문서를 공유하고 편집하고 저장하고 읽고 복구할 수 있습니다. 링구아 프랑카입니다. 디지털 페이퍼입니다.


Simon White

<meta charset="utf-8"> 은 HTML5와 함께/HTML5용으로 도입되었습니다.

문서에서 언급했듯이 둘 다 유효합니다. 그러나 <meta charset="utf-8"> 은 HTML5에만 해당되며 입력/기억하기 쉽습니다.

시간이 지나면 오래된 스타일은 가까운 장래에 더 이상 사용되지 않을 것입니다. <meta charset="utf-8"> 고수할 것입니다.

방법은 하나뿐입니다. 기술의 경우 오래된 것을 단계적으로 없애는 것입니다(정말, 정말 빠름)

문서: HTML 메타 문자 집합 속성 - W3Schools


Omar

다른 답변에 이의를 제기하지는 않지만 다음을 언급할 가치가 있다고 생각합니다.

  1. "long"( http-equiv ) 표기법과 "short" 표기법은 동일합니다. 먼저 오는 쪽이 이깁니다.
  2. 웹 서버 헤더는 모든 <meta> 태그를 재정의합니다.
  3. BOM (바이트 순서 표시)은 모든 것을 재정의하고 많은 경우 HTML 4(아마도 다른 것들도 포함)에 영향을 미칩니다.
  4. 인코딩을 선언하지 않으면 브라우저에 정의된 "대체 텍스트 인코딩"으로 텍스트를 얻을 수 있습니다. Firefox나 Chrome 모두 UTF-8입니다.
  5. 다른 단서가 없으면 브라우저는 인코딩을 얻기 위해 ASCII로 된 것처럼 문서를 읽으려고 시도하므로 이상한 인코딩을 사용할 수 없습니다(BOM이 있는 UTF-16은 해야 함).
  6. 사양에 따르면 인코딩 선언은 문서의 처음 512바이트 내에 있어야 하지만 대부분의 브라우저는 그 이상을 읽으려고 합니다.

echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\xbb\xbf<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="windows-1251"><title>привет</title></head><body>привет</body></html>' | nc -lp 4500 localhost:4500 가리키도록 합니다. (물론 부분을 변경하거나 제거하고 싶을 것입니다. BOM 부분은 \xef\xbb\xbf 입니다. 쉘 인코딩에 주의하십시오.)

인코딩을 명시적으로 선언하는 것이 매우 중요합니다. 브라우저가 추측하게 하면 보안 문제가 발생할 수 있습니다.


squirrel

HTML5를 사용할 때 웹 브라우저에 <meta charset="utf-8" />

HTML4 또는 XHTML을 사용하거나 PHP 5.3의 DOMDocument 와 같은 오래된 DOM 파서의 경우 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


Timo Huovinen

이메일에 서명을 포함하려면 긴 버전을 사용합니다.

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

그 이유는 많은 이메일 리더가 HTML5를 사용하지 않기 때문에 항상 이전 HTML 스타일을 사용하는 것이 좋습니다. 사실 divs + CSS보다 테이블을 사용하는 것이 좋습니다.


chelder

Mozilla FoundationSitePoint를 기반으로 한 몇 가지 뉴스가 있습니다.

더 이상 사용되지 않으므로 이 값( http-equiv=content-type )을 사용하지 마십시오. meta > 요소 charset 속성을 선호하십시오.

여기에 이미지 설명 입력


user10089632

출처 : http:www.stackoverflow.com/questions/4696499/meta-charset-utf-8-vs-meta-http-equiv-content-type

반응형