Kiedy należy używać encji HTML

Od jakiegoś czasu mnie to myli. Wraz z pojawieniem się UTF - 8 jako standard de-facto w tworzeniu stron internetowych nie jestem pewien, w jakich sytuacjach powinienem używać encji html, a dla których powinienem po prostu używać znaku UTF-8.

Przykłady: em dash, ampersand, itp.

Proszę o wyjaśnienie tej kwestii. To będzie doceniane.

Author: Singleton, 2009-01-12

8 answers

Zazwyczaj nie musisz używać encji znaków HTML, jeśli twój edytor obsługuje Unicode. Encje mogą być przydatne, gdy:

  • twoja klawiatura nie obsługuje znaków, które musisz wpisać. Na przykład wiele klawiatur nie ma em-dash ani symbolu praw autorskich.
  • twój edytor nie obsługuje Unicode (bardzo często kilka lat temu, ale prawdopodobnie nie dzisiaj).
  • chcesz powiedzieć jasno w źródle, co się dzieje. Na przykład kod   jest jaśniejszy niż odpowiadający znak spacji.
  • musisz uciec od znaków specjalnych HTML, takich jak <, &, lub ".
 64
Author: JacquesB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-20 17:33:46

Opierając się na uwagach, które otrzymałem, przyjrzałem się temu nieco dalej. Wydaje się, że obecnie najlepszą praktyką jest rezygnacja z używania encji HTML i użycie rzeczywistego znaku UTF-8 zamiast. Wymienione powody są następujące:

  1. kodowanie UTF-8 jest łatwiejsze do odczytania i edycji dla tych, którzy rozumieją, co oznacza znak i wiedzą, jak go wpisać.
  2. kodowanie UTF-8 jest tak samo niezrozumiałe jak kodowanie encji HTML dla tych, którzy ich nie rozumieją, ale mają tę zaletę, że renderują jako znaki specjalne, a nie trudne do zrozumienia kodowania dziesiętnego lub szesnastkowego.

Dopóki kodowanie strony jest poprawnie ustawione na UTF-8, powinieneś używać rzeczywistego znaku zamiast encji HTML. Przeczytałem kilka dokumentów na ten temat, ale najbardziej pomocne były:

Z UTF-8: The Tajemnica kodowania znaków artykuł:

Wikipedia to świetne studium przypadku dla aplikacja, która pierwotnie używała ISO-8859-1, ale przełączył się na UTF-8, gdy stało się zbyt uciążliwe, aby wspierać Języki obce. boty będą teraz właściwie przeglądać artykuły i Konwertuj encje znaków na ich odpowiadające postaciom rzeczywistym dla ze względu na łatwość obsługi i searchability .

Ten artykuł daje również ładny przykład dotyczący Chińskie kodowanie. Oto skrócony przykład ze względu na lenistwo:

UTF-8:

這兩個字是甚麼意思

Encje HTML :

&#36889;&#20841;&#20491;&#23383;&#26159;&#29978;&#40636;&#24847;&#24605;

Kodowanie encji UTF - 8 i HTML nie ma dla mnie znaczenia, ale przynajmniej kodowanie UTF-8 jest rozpoznawalne jako język obcy i będzie renderowane poprawnie w polu edycji. Artykuł mówi dalej o wersji kodowanej encją HTML:

Niezwykle niewygodne dla tych z nas kto właściwie wie jaka postać byty są całkowicie niezrozumiałe do biednych użytkowników, którzy nie! Nawet nieco bardziej przyjazny dla użytkownika, "zrozumiałe" byty postaci, takie jak opuści użytkowników, którzy są niezainteresowana nauką HTML drapie się po głowach. Z drugiej strony ręka, jeśli widzą θ w polu edycji, będą wiedzieć, że to coś specjalnego. charakter, i traktować go odpowiednio, nawet jeśli nie wiedzą jak pisać sama postać.

Jako inni zauważyli, że nadal musisz używać encji HTML dla zarezerwowanych znaków XML(ampersand, less-than, greater-than).

 102
Author: William Brendel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 14:16:25

Nie używałbym UTF-8 dla znaków, które są łatwo mylone wizualnie. Na przykład, trudno jest odróżnić emdash od minus, a zwłaszcza non-breaking spacji od spacji. Dla tych znaków zdecydowanie użyj Bytów.

Dla znaków, które są łatwo zrozumiałe wizualnie( jak na przykład chińskie przykłady powyżej), śmiało użyj UTF-8, jeśli chcesz.

 5
Author: Ned Batchelder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-12 20:17:46

Osobiście robię wszystko w utf-8 od dawna, jednak na stronie html zawsze musisz przekonwertować znaki ampersands ( & ), większe niż ( > ) i mniejsze niż ( i

Ponadto, jeśli zamierzasz programować przy użyciu tekstu utf-8, jest kilka rzeczy, na które warto zwrócić uwagę.

  • XML potrzebuje dodatkowych linii do walidacji podczas używania encji.
  • niektóre biblioteki nie pasują do utf-8. Na przykład PHP w niektórych Dystrybucje Linuksa zrezygnowały z pełnego wsparcia dla utf-8 w swoich bibliotekach wyrażeń regularnych.
  • trudniej jest ograniczyć liczbę znaków w tekście, który używa encji html, ponieważ jedna encja używa wielu znaków. Zawsze istnieje również ryzyko przecięcia istoty na pół.
 5
Author: Marco Luglio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-01 17:41:39

Byty mogą kupić Ci kompatybilność z martwymi umysłami klientami, którzy nie rozumieją poprawnie kodowania. Nie wierzę, że obejmuje to żadnych obecnych przeglądarek, ale nigdy nie wiadomo, jakie inne rodzaje programów może być uderzanie Ciebie.

Bardziej przydatne jest to, że encje HTML chronią Cię przed własnymi błędami: jeśli źle skonfigurujesz coś na serwerze i skończysz obsługując stronę z nagłówkiem HTTP, który mówi, że jest ISO-8859-1 i META tag, który mówi, że jest UTF-8, przynajmniej Twoje -es zawsze zadziała.

 4
Author: Jim Puls,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-12 19:24:25

Encje HTML są przydatne, gdy chcemy wygenerować zawartość, która będzie dołączana (dynamicznie) do stron z (kilkoma) różnymi kodowaniami. Na przykład, mamy zawartość białej etykiety, która jest zawarta zarówno na stronach internetowych zakodowanych w ISO-8859-1, jak i UTF-8...

Gdyby konwersja zestawu znaków z / na UTF-8 nie była aż takim zawodnym bałaganem (zawsze natkniesz się na niektóre znaki i narzędzia, które nie konwertują poprawnie), standaryzacja na UTF-8 byłaby dobrym rozwiązaniem.

 4
Author: mjy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-12 20:23:52

Jeśli Twoje strony są poprawnie zakodowane w utf-8 nie powinieneś mieć potrzeby encji html, po prostu użyj znaków, które chcesz bezpośrednio.

 2
Author: Otávio Décio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-12 19:19:57

Wszystkie poprzednie odpowiedzi mają dla mnie sens.

Dodatkowo: zależy to głównie od edytora, którego chcesz użyć i języka dokumentu. Minimalnym wymogiem dla edytora jest obsługa języka dokumentu. Oznacza to, że jeśli twój tekst jest w języku japońskim, uważaj na edytor, który ich nie wyświetla (tzn. brak encji dla samego dokumentu). Jeśli jest to angielski, możesz nawet użyć starego edytora podobnego do Vima i używać encji tylko dla względnych © i przyjaciół. Z szkolenie: > dla > i innych HTML-specials jeszcze trzeba. Ale nawet z innymi językami łacińskimi-1 (niemiecki, francuski itp.) pisanie jest bólem w wiesz gdzie...

Ponadto osobiście piszę encje dla znaków niewidocznych i tych, które wyglądają podobnie do standardowego-ascii i dlatego łatwo je pomylić. Na przykład istnieje u1173 (wyglądający jak myślnik w niektórych zestawach znaków) lub u1175, który wygląda jak pionowy pasek. W każdym razie użyłbym Bytów.

 2
Author: blabla999,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-12 20:17:42