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
応答ヘッダーのものが使用されます。メタタグは、ページがローカルディスクファイルシステムから読み込まれる場合にのみ使用されます。
回答:
HTML5では、これらは同等です。短い方を使用すると、覚えやすく入力しやすくなります。ブラウザのサポートは、下位互換性のために設計されているため、問題ありません。
<meta charset='utf-8'>
IE6で動作しますか?
<meta>
、IE8の先読みダウンローダーを無効にして文字読み込みを設定することを示しており、ページの読み込み時間に影響を与える可能性があります。ええ、そうです、IE8をドロップします。@MészárosLajosは数年後にここに戻ってきて、IE8をサポートするために私たちのボールを破壊することができます。;-)
メタ文字セット宣言の両方の形式は同等であり、ブラウザ間で同じように機能するはずです。ただし、Webファイルの文字セットを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で再保存することもできます。
meta
HTTPヘッダーは必要ありません。BOM meta
またはHTTPヘッダーのいずれかが必要です。
Summing up: don't use BOM for UTF-8
これには同意できません。UTF-8のBOMは、エンコーディングタイプのシグナリングに非常に役立ちます。それ以外の場合は、この質問が参照するメタタグなどを推測または使用する必要があります。BOMのすばらしい点は、これがUnicode仕様の一部であるため、HTMLだけでなく、Unicodeでエンコードされたすべてのデータに使用できることです。私たちがすべきことは、どこでもBOMを使用し、レガシーソフトウェアを爆破させ、それらのバグを報告して修正することです。
短いコードを使用するもう1つの理由は、マークアップで文字セットを指定する他のインスタンスと一致するためです。例えば:
<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以降のWebドキュメントのデフォルトのエンコーディングであり、最新のWebページを作成する唯一の実用的な方法です。
また、UTF-8でHTMLエンティティを使用しないでください。著作権記号のような文字は直接入力する必要があります。使用する必要があるエンティティは、5つの予約済みマークアップ文字(小なり、大なり、アンパサンド、プライム、ダブルプライム)のみです。エンティティにはHTMLパーサーが必要です。HTMLパーサーは常に使用するとは限りません。エラーが発生し、コードが読みにくくなり、ファイルサイズが大きくなり、使用したエンティティによっては、さまざまなブラウザーで正しくデコードされない場合があります。著作権、商標、オープンクォート、クローズクォート、アポストロフィ、エムダッシュ、エンダッシュ、箇条書き、ユーロ、およびコンテンツに含まれるその他の文字を入力/挿入する方法を学び、実際の文字をコードで使用します。Macには、キーボードシステム設定でオンにできるCharacter Viewerがあります。必要な文字を見つけてドラッグアンドドロップするか、対応するキーボードビューアを使用して入力するキーを確認できます。たとえば、商標はOption + 2です。UTF-8には、書かれたすべての人間の言語の文字と記号がすべて含まれています。したがって、emダッシュの代わりに-を使用する言い訳はありません。句読点やタイポグラフィのルールを学ぶことも悪い考えではありません。たとえば、ピリオドが引用符の内側ではなく外側にあることを知っているとします。
content-typeやencodingなどのタグを使用することは非常に皮肉なことです。これらのことを知らなければ、ファイルを解析してメタタグの値を取得することができなかったからです。
いいえ、そうではありません。ブラウザーは、ファイルの解析をブラウザーのデフォルトのエンコード(UTF-8またはISO-8859-1)として開始します。US-ASCIIはISO-8859-1 と UTF-8 の両方のサブセットであるため、ブラウザーはどちらの方法でも問題なく読み取ることができます...同じです。ブラウザーがメタ文字セットタグを検出すると、エンコードがブラウザーが既に使用しているものと異なる場合、ブラウザーは指定されたエンコードでページをリロードします。そのため、メタ文字セットタグを先頭、headタグの直後、他の何よりも、タイトルまで配置します。これにより、タイトルにUTF-8文字を使用できます。
BOMなしのUTF-8エンコーディングでファイルを保存する必要があります
それは厳密には当てはまりません。ドキュメントにUS-ASCII文字しか含まれていない場合は、サブセットであるため、US-ASCIIとして保存し、UTF-8として提供できます。しかし、Unicode文字がある場合、それは正しいです。BOMなしでUTF-8として保存する必要があります。
ファイルをUTF-8で保存する優れたテキストエディターが必要な場合は、Notepad ++をお勧めします。
Macでは、Mac App StoreのBare Bones TextWrangler(無料)、またはMac App Storeにある$ 39.99のBare Bones BBEditを使用してください。どちらのアプリでも、ドキュメントウィンドウの下部にメニューがあり、ドキュメントのエンコードを指定できます。「UTF-8 no BOM」を簡単に選択できます。そしてもちろん、それをプリファレンスで新しいドキュメントのデフォルトとして設定できます。
ただし、WebサーバーがHTTPヘッダーでエンコードを提供する場合(推奨)、両方の[メタタグ]は不要です。
不正解です。もちろん、HTTPヘッダーでエンコードを設定する必要がありますが、ユーザーがページをブラウザーからローカルストレージに保存し、後で再度開くことができるように、メタ文字セット属性でもエンコードを設定する必要があります。存在するエンコーディングの唯一の指標は、メタ文字セット属性です。同じ理由でベースタグも設定する必要があります...サーバーではベースタグは不要ですが、ローカルストレージから開いた場合、ベースタグはページがサーバー上にあるかのように機能し、すべての配置されたアセットなど、リンク切れはありません。
AddDefaultCharset UTF-8
または、特定のファイルタイプのエンコーディングを次のように変更することもできます。
AddType text/html;charset=utf-8 html
UTF-8とLatin-1(ISO-8859-1)の両方のファイルを提供するためのヒントは、UTF-8ファイルに「テキスト」拡張子を付け、Latin-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ドキュメントは、よくできています。多くのコンテキストでそのドキュメントを共有、編集、保存、読み取り、回復し、依存することができます。それはリングアフランカです。デジタルペーパーです。

デフォルトのグリフよりも、私が認識できない奇妙な文字よりも見たいです。
<meta charset="utf-8">
HTML5で導入されました。
ドキュメントで述べたように、どちらも有効です。ただし、これ<meta charset="utf-8">
はHTML5専用です(入力が簡単で覚えやすい)。
近いうちに、古いスタイルは廃止される予定です。新品にこだわりたい<meta charset="utf-8">
です。
方法は1つしかありませんが、上っています。技術の場合、それは古いものを段階的に廃止することです(本当に、本当に速い)
ドキュメント: HTMLメタ文字セット属性-W3Schools
他の回答に異議を唱えることはしませんが、以下に言及する価値があると思います。
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
私の記憶に問題がありました。また、たとえば、画像をアップロードするときに、スクリプトコンテンツとして盗聴される何かをアップロードする場合など、Webでの盗聴は一般的に良くありません。
Mozilla Foundationとsitepointに基づくいくつかのニュースがあります
この値(
http-equiv=content-type
)は廃止されているため、使用しないでください。charset
<meta
>要素の属性を優先します。