2

ページが散発的にガベージとしてレンダリングされる問題が発生しており、問題を調査している間に、サイトの元の開発者が文字セットまたは doctype を指定していないことがわかりました。

現在、ほとんどのサイトは Doctype なしで開発されており、デフォルトで IE の互換モードでレンダリングされるため、Doctype を追加することは現時点では不可能です。ただし、私たちが抱えていた問題に対処できることを期待して、サイトが文字セットISO-8859-1を使用する必要があることを指定しました。

文字セットの指定に失敗すると、これらの問題が発生しますか?もしそうなら、その理由は?

4

1 に答える 1

2

文字エンコーディング (charset) を指定しないということは、ブラウザーと検索エンジンが推測する必要があることを意味します。その影響は大きく異なります。

たとえば、コンテンツが ASCII 文字のみの場合、間違った動作をする可能性は非常に低くなります。ただし、それでも問題が発生する場合があります。エンコーディングを宣言していないページにアクセスし、別のエンコーディングを手動で試して、最終的に UTF-16 を選択する必要があるとします (可能性は低いですが可能です)。次に、エンコーディングを宣言していない Ascii エンコーディングのみの別のページにアクセスすると、UTF-16 を使用して表示されます。つまり、ほとんどが中国語に見えます。

より一般的な問題は、ドキュメントに非 Ascii 文字が含まれていて、ブラウザーが間違って推測した場合、一部の文字の代わりにさまざまなものが表示される可能性があることです。内部に 16 進数の小さな四角形。などの文字の奇妙な組み合わせ。象徴 ; 異なる書記体系の文字 (たとえば、ラテン文字が表示されると予想されるギリシャ文字やキリル文字など)。

文字エンコーディングは、doctype 宣言や quirks モード (互換性) とはほとんど関係がなく、スタイリング、ボックスの寸法、ボックスの配置などに関連しています。

宣言する必要があるのは、ページで使用される実際のエンコーディングです。それが何であるかを判断するには、オーサリング ツールとページ自体を調べる必要があるかもしれません。ISO-8859-1 である可能性は十分にありますが、オーサリング ソフトウェアによって生成されるデフォルトとして UTF-8 を使用することがますます一般的になっています。Ascii 文字のみを含むページでは違いは見られません。

エンコーディングが ISO-8859-1 であることがわかった場合でも、windows-1252 を宣言することをお勧めします。その理由は、たとえばどこかからテキストをコピーするときなどに、実際に windows-1252 でエンコードされたページを作成する可能性があるためです。エンコーディングの違いは、windows-1252 では、ISO-8859-1 で制御文字用に予約されているコード位置の一部に印刷可能な文字 (スマート句読点など) があり、これらの文字 (C1 コントロール) は HTML では許可されていないことです。

于 2012-11-19T22:36:45.457 に答える