2013-05-12 7 views

Odpowiedz

10

Niezależnie od tego, czy taki znacznik meta jest obecny czy nie, przeglądarki i programy klienckie najpierw sprawdzą nagłówki HTTP, aby znaleźć tam informacje o kodowaniu. W rzeczywistości, będą jeszcze przed tymi ustawieniami użytkownika honoru i wykonają podsłuchy BOM, jak opisano w sekcji 8.2.2.1 Determining the character encoding w HTML5 CR - w tym numerze jest opis rzeczywistości, a nie tylko proponowanej normy.

Tak więc odpowiedź jest naprawdę "to zależy". W wielu przypadkach znacznik meta jest ignorowany, więc pominięcie go nie ma żadnego efektu, z wyjątkiem być może sytuacji, w których dokument HTML jest zapisywany lokalnie (tak, że nagłówki HTTP są tracone). W wielu innych przypadkach nie jest on ignorowany, ale jeśli zostanie pominięty, przeglądarki i tak będą wnioskować o prawidłowym kodowaniu. A w niektórych przypadkach, gdy tag jest jedyną rzeczą, która sprawia, że ​​przeglądarka używa właściwego kodowania, pomijanie jej spowoduje błędną interpretację danych, zazwyczaj tak, że bajty są interpretowane w kodowaniu Windows-1252. To, co to ma znaczenie, zależy od rzeczywistej treści.

10

Co stanie się, gdy nie podamy <meta charset="utf-8">? w HEAD dokumentu HTML?

Środek użytkownik szuka nagłówka HTTP Content-Type odpowiedzi wysłanej z serwera:

Content-Type: text/html; charset=utf-8 

A jeśli nagłówek Content-Type nie określa charset zależnych od User Agent inna rzeczy mogą się zdarzyć. Niektóre programy użytkownika mogą próbować użyć heurystyki do sprawdzenia poprawnego zestawu znaków przez analizę niektórych bajtów ze strumienia odpowiedzi w poszukiwaniu znanych kodowań. A jeśli to się nie powiedzie, na twojej stronie internetowej może pojawić się kilka znaków zapytania lub dziwnych symboli w miejscu, w którym użyłeś znaków spoza zakresu ASCII.

+0

Ta odpowiedź jest nieco myląca, ponieważ nagłówek HTTP jest zawsze sprawdzany jako pierwszy. – user123444555621

Powiązane problemy