HTML5 Doctype의 문자셋을 정의하기 위해 어떤 표기법을 사용해야합니까?
짧은:
<meta charset="utf-8" />
긴:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Content-Type
응답 헤더에있는 것이 사용됩니다. 메타 태그는 페이지가 로컬 디스크 파일 시스템에서로드 될 때만 사용됩니다.
HTML5 Doctype의 문자셋을 정의하기 위해 어떤 표기법을 사용해야합니까?
짧은:
<meta charset="utf-8" />
긴:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Content-Type
응답 헤더에있는 것이 사용됩니다. 메타 태그는 페이지가 로컬 디스크 파일 시스템에서로드 될 때만 사용됩니다.
답변:
<meta charset='utf-8'>
IE6 에서 작동 합니까 ?
<meta>
문자 인코딩을 설정하여 IE8에서 lookahead downloader를 비활성화하여 페이지로드 시간에 영향을 줄 수 있음을 나타냅니다 . 예, 알고 있습니다 ... IE8을 삭제하십시오. @ MészárosLajos는 몇 년 안에 다시 와서 IE8을 지원하기 위해 공을 터뜨릴 수 있습니다. ;-)
메타 문자셋 선언 의 두 형태는 모두 동일하며 브라우저에서 동일하게 작동해야합니다. 그러나 웹 파일 문자 세트를 UTF-8로 선언 할 때 기억해야 할 사항이 몇 가지 있습니다.
Apache 서버는 기본적으로 ISO-8859-1의 파일을 제공하도록 구성되므로 .htaccess
파일에 다음 줄을 추가해야 합니다.
AddDefaultCharset UTF-8
그러면 Content-Type 응답 헤더에서 UTF-8 인코딩을 선언하는 파일을 제공하도록 Apache가 구성되지만 파일 을 BOM없이 UTF-8로 저장 해야합니다 .
BOM이 없으면 메모장에서 파일을 UTF-8로 저장할 수 없습니다. 메모장 + + 인 무료 편집기입니다 . 프로그램 메뉴 표시 줄에서 "인코딩> BOM없이 UTF-8로 인코딩"을 선택하십시오. "인코딩> BOM없이 UTF-8로 변환"을 사용하여 파일을 열고 UTF-8로 다시 저장할 수도 있습니다.
Wikipedia의 BOM (Byte Order Mark) 에 대한 추가 정보 .
meta
HTTP 헤더 가 필요하지 않습니다 . BOM meta
또는 HTTP 헤더 중 하나만 있으면 됩니다.
Summing up: don't use BOM for UTF-8
나는 이것에 동의 할 수 없다. UTF-8의 BOM은 인코딩 유형을 시그널링하는 데 매우 유용합니다. 그렇지 않으면이 질문에서 언급 한 메타 태그와 같은 것을 추측하거나 사용해야합니다. BOM의 멋진 점은 BOM이 유니 코드 사양의 일부이므로 HTML뿐만 아니라 유니 코드로 인코딩 된 모든 데이터에 사용될 수 있다는 것입니다. 우리가 해야 할 일은 어디에서나 BOM을 사용하고, 레거시 소프트웨어를 폭파시키고, 버그를보고하고 수정하는 것입니다.
짧은 것을 사용해야하는 또 다른 이유는 마크 업으로 문자 세트를 지정할 수있는 다른 인스턴스와 일치하기 때문입니다. 예를 들면 다음과 같습니다.
<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 파서가 필요합니다. 오류가 발생하거나 코드를 읽을 수 없게 만들고 파일 크기를 늘리며 사용하는 엔터티에 따라 다양한 브라우저에서 잘못 디코딩되는 경우가 있습니다. 저작권, 상표, 공개 견적, 가까운 견적, 아포스트로피, 엠 대시, 엔 대시, 글 머리 기호, 유로 및 기타 콘텐츠에서 발생하는 다른 문자를 입력 / 삽입하는 방법을 배우고 코드에서 실제 문자를 사용하십시오. Mac에는 키보드 시스템 환경 설정에서 켤 수있는 문자 뷰어가 있습니다. 필요한 문자를 찾아서 끌어다 놓거나 일치하는 키보드 뷰어를 사용하여 입력 할 키를 확인할 수 있습니다. 예를 들어, 상표는 Option + 2입니다. UTF-8은 모든 작성된 인간 언어의 모든 문자와 기호를 포함합니다. 따라서 em 대시 대신에 사용에 대한 변명이 없습니다. 구두점 및 활판 인쇄 규칙을 배우는 것도 나쁜 생각이 아닙니다.
content-type 및 encoding과 같은 것에 태그를 사용하는 것은 매우 아이러니한데, 그 사실을 알지 못하면 메타 태그의 가치를 얻기 위해 파일을 구문 분석 할 수 없었기 때문입니다.
아니요, 사실이 아닙니다. 브라우저는 파일을 브라우저의 기본 인코딩 (UTF-8 또는 ISO-8859-1)으로 구문 분석하기 시작합니다. US-ASCII는 ISO-8859-1 및 UTF-8 의 하위 집합이므로 브라우저는 어느 쪽이든 잘 읽을 수 있습니다 ... 동일합니다. 브라우저에 메타 문자 집합 태그가 있으면 인코딩이 브라우저에서 이미 사용중인 것과 다른 경우 브라우저는 지정된 인코딩으로 페이지를 다시로드합니다. 그렇기 때문에 메타 문자셋 태그를 맨 위, 헤드 태그 바로 다음에, 제목 앞에도 넣습니다. 그렇게하면 제목에 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 헤더에서 인코딩을 설정해야하지만 메타 문자 세트 속성에서도 인코딩을 설정하여 사용자가 페이지를 브라우저에서 로컬 스토리지에 저장 한 다음 나중에 다시 열 수 있도록해야합니다. 존재할 인코딩의 유일한 표시는 메타 문자셋 속성이다. 같은 이유로 서버에서 기본 태그를 설정해야합니다 ... 기본 태그는 필요하지 않지만 로컬 저장소에서 열면 기본 태그를 사용하면 페이지가 서버에있는 것처럼 페이지가 모든 페이지와 함께 작동 할 수 있습니다 자산 등이 있고 끊어진 링크가 없음
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 라인 엔딩이 아닌 유닉스 라인 엔딩으로 문서를 저장하는 것을 고려하십시오. 특히 레거시 시스템에서 멀어 질수록 도움이되지 않습니다. 유효한 HTML5, UTF-8 인코딩 및 Unix 줄 끝이있는 HTML 문서는 잘 수행되었습니다. 여러 상황에서 해당 문서를 공유, 편집 및 저장하고 읽고 복구하며 신뢰할 수 있습니다. 링구아 프랑카입니다. 디지털 종이입니다.

기본 글리프 또는 내가 인식하지 못하는 이상한 문자보다 보입니다 .
<meta charset="utf-8">
HTML5와 함께 /를 위해 소개되었습니다.
문서에서 언급했듯이 둘 다 유효합니다. 그러나 <meta charset="utf-8">
HTML5 전용이며 입력 / 기억하기 쉽습니다.
머지 않아 구식 스타일은 가까운 장래에 폐기 될 예정입니다. 나는 새로운 것을 고수했다 <meta charset="utf-8">
.
한 가지 방법이 있지만 위로 올라갑니다. 기술의 경우, 그것은 오래된 것을 단계적으로 폐지하고 있습니다 (실제로 정말 빠릅니다)
다른 답변에 대해서는 이의를 제기하지 않지만 다음 내용은 언급 할 가치가 있다고 생각합니다.
http-equiv
) 표기법과 "짧은"표기법은 동일하며, 먼저이기는 것입니다.<meta>
태그를 무시 합니다.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
. 쉘 인코딩에주의하십시오.
인코딩을 명시 적으로 선언하는 것이 매우 중요합니다. 브라우저가 추측하도록하면 보안 문제가 발생할 수 있습니다.
UTF-7
내가 기억하는 것에서 문제가있었습니다 . 또한 웹에서 스니핑하는 것은 일반적으로 예를 들어 스크립트 콘텐츠로 스니핑 된 이미지를 업로드 할 때 좋지 않습니다.
Mozilla Foundation 및 사이트 포인트를 기반으로하는 일부 뉴스가 있습니다.
이 값 (
http-equiv=content-type
)은 사용되지 않으므로 사용하지 마십시오 .charset
<meta
> 요소 에서 속성을 선호하십시오 .