Po co używać encji HTML zamiast po prostu umieszczać znaki Unicode w HTML?

12

Powiedzmy, że chcę wstawić nieprzezroczysty znak w pliku HTML; na przykład „→”. Czy jest jakiś powód, dla którego powinienem wpisać go jako „& rarr;” zamiast po prostu wstawić „→” w pliku HTML? Załóżmy, że mój plik HTML jest kodowany i przesyłany w jakimś formacie Unicode.

Nacięcie
źródło

Odpowiedzi:

10

Te dwa końcowe stwierdzenia są dużymi założeniami.

Na przykład mamy aplikację internetową, która używa AJAX w dosłownym znaczeniu - używamy go do ładowania dokumentów XML w locie. Jeśli dokument XML nie ma poprawnego content-encodingnagłówka (lub w ogóle go nie ma), wówczas dowolne znaki Unicode (smartquotes, długie myślniki, nawet niektóre specjalne białe znaki i słowo Café) powodują, że Internet Explorer upada za każdym razem. Żądanie AJAX po prostu kończy się niepowodzeniem i odpala błąd javascript.

Jeśli jednak dokonamy zamiany po stronie serwera wszystkich znaków Unicode na ich encje HTML, wszystko działa dobrze.

Oczywiście, jeśli plik ma prawidłowe nagłówki zawartości, nie powinno to stanowić problemu dla żadnej współczesnej przeglądarki.

Mark Henderson
źródło
0

Jeśli jednak dokonamy zamiany po stronie serwera wszystkich znaków Unicode na ich encje HTML, wszystko działa dobrze.

Zakłada się, że wszystkie znaki można zastąpić elementami HTML, których nie mogą. Użyj poprawnych nagłówków i wcześnie wykryj te problemy (używając niewłaściwego nagłówka), zamiast się mylić, gdy wystąpią później.


źródło
7
W rzeczywistości każdy znak Unicode ma odpowiedni byt HTML.
Mark Henderson
O mój Boże, myślałem o nazwanych bytach. :)
0

Aby dodać do doskonale przyjętej odpowiedzi: ogólnie pliki ASCII są znacznie bardziej przenośne w różnych edytorach.

Bobby Jack
źródło