Domanda

Questo mi ha confuso per qualche tempo. Con l'avvento di UTF-8 come standard di fatto nello sviluppo web non sono sicuro in quali situazioni dovrei usare le entità HTML e per quali dovrei usare solo il carattere UTF-8. Ad esempio,

  • em dash (& # 8211 ;, &emdash;)
  • e commerciale (& amp ;, &)
  • 3/4 frazione (& # 190 ;, ¾)

Si prega di fare luce su questo problema. Sarà apprezzato.

È stato utile?

Soluzione

In genere non è necessario utilizzare entità di caratteri HTML se l'editor supporta Unicode. Le entità possono essere utili quando:

  • La tua tastiera non supporta il carattere che devi digitare. Ad esempio, molte tastiere non hanno em-dash o il simbolo del copyright.
  • Il tuo editor non supporta Unicode (molto comune alcuni anni fa, ma probabilmente non oggi).
  • Vuoi rendere esplicito nella fonte cosa sta succedendo. Ad esempio, il   codice è più chiaro del corrispondente carattere di spazio bianco.
  • Devi uscire dai caratteri speciali HTML come <, & o ".

Altri suggerimenti

Sulla base dei commenti che ho ricevuto, ho approfondito ulteriormente questo aspetto. Sembra che attualmente la migliore pratica sia quella di rinunciare all'utilizzo di entità HTML e utilizzare invece il carattere UTF-8 effettivo . I motivi elencati sono i seguenti:

  1. Le codifiche UTF-8 sono più facili da leggere e modificare per coloro che comprendono il significato del personaggio e sanno come digitarlo.
  2. Le codifiche UTF-8 sono incomprensibili quanto le codifiche di entità HTML per coloro che non le comprendono, ma hanno il vantaggio di renderle come caratteri speciali piuttosto che di codifiche decimali o esadecimali difficili da comprendere.

Fintanto che la codifica della tua pagina è impostata correttamente su UTF-8, dovresti usare il carattere effettivo anziché un'entità HTML. Ho letto diversi documenti su questo argomento, ma i più utili sono stati:

Dall'articolo UTF-8: The Secret of Character Encoding :

  

Wikipedia è un ottimo caso di studio per un   applicazione utilizzata originariamente   ISO-8859-1 ma passato a UTF-8 quando   è diventato troppo ingombrante per essere supportato   lingue straniere. I robot lo faranno ora   effettivamente passare attraverso articoli e   convertire le entità personaggio in loro   corrispondenti personaggi reali per il   amor di facilità d'uso e   ricercabilità .

Questo articolo fornisce anche un bell'esempio di codifica cinese. Ecco l'esempio abbreviato per amore della pigrizia:

UTF-8:

這兩個字是甚麼意思

Entità HTML :

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

Le codifiche di entità UTF-8 e HTML sono entrambe insignificanti per me, ma almeno la codifica UTF-8 è riconoscibile come lingua straniera e verrà visualizzata correttamente in una casella di modifica. L'articolo continua dicendo quanto segue sulla versione codificata da entità HTML:

  

Estremamente scomodo per quelli di noi   che sanno davvero quale personaggio   le entità sono totalmente incomprensibili   agli utenti poveri che non lo fanno! Persino il   leggermente più user-friendly,   & Quot; & Intelligibile quot; entità del personaggio piace   & Amp; teta; lascerà gli utenti che lo sono   disinteressato all'apprendimento dell'HTML   grattandosi la testa. Dall'altra   mano, se vedono & # 952; in una casella di modifica,   sapranno che è uno speciale   carattere e trattalo di conseguenza,   anche se non sanno scrivere   quel personaggio stesso.

Come altri hanno notato, è comunque necessario utilizzare entità HTML per caratteri XML riservati (e commerciale, minore di, maggiore di).

Non userei UTF-8 per personaggi che possono essere facilmente confusi visivamente. Ad esempio, è difficile distinguere un'emash da un meno, o soprattutto uno spazio non-breaking da uno spazio. Per questi personaggi, usa sicuramente le entità.

Per i personaggi che sono facilmente comprensibili visivamente (come gli esempi cinesi sopra), vai avanti e usa UTF-8 se vuoi.

Personalmente faccio tutto in utf-8 da molto tempo, tuttavia, in una pagina html, devi sempre convertire le e commerciali (& amp;), maggiore di (>) e minore di allora ( <) caratteri alle loro entità equivalenti, & amp; amp ;, & amp; gt; e & amp; lt;

Inoltre, se hai intenzione di fare un po 'di programmazione usando il testo utf-8, ci sono alcune cose da tenere d'occhio.

  • XML richiede alcune righe extra per convalidare quando si usano entità.
  • Alcune librerie non funzionano bene con utf-8. Ad esempio, PHP in alcune distribuzioni Linux ha perso il pieno supporto per utf-8 nelle loro librerie di espressioni regolari.
  • È più difficile limitare il numero di caratteri in un testo che utilizza entità html, poiché una singola entità utilizza molti caratteri. Inoltre c'è sempre il rischio di dimezzare l'entità.

Le entità potrebbero offrirti un po 'di compatibilità con i client cerebrali che non comprendono correttamente le codifiche. Non credo che includa alcun browser attuale, ma non si sa mai quali altri tipi di programmi potrebbero colpire.

Più utile, tuttavia, è che le entità HTML ti proteggano dai tuoi errori: se configuri male qualcosa sul server e finisci per pubblicare una pagina con un'intestazione HTTP che dice che è ISO-8859-1 e un tag META che dice che è UTF-8, almeno il tuo & amp; mdash; es funzionerà sempre.

Le entità HTML sono utili quando si desidera generare contenuto che verrà incluso (dinamicamente) in pagine con (diverse) codifiche diverse. Ad esempio, abbiamo contenuti in white label inclusi sia nelle pagine Web codificate ISO-8859-1 che UTF-8 ...

Se la conversione del set di caratteri da / in UTF-8 non fosse un casino così inaffidabile (inciampi sempre su alcuni personaggi e alcuni strumenti che non vengono convertiti correttamente), standardizzare su UTF-8 sarebbe la strada da percorrere .

Se le tue pagine sono correttamente codificate in utf-8, non dovresti avere bisogno di entità html, usa semplicemente i caratteri che desideri direttamente.

Tutte le risposte precedenti hanno senso per me.

Inoltre: dipende principalmente dall'editor che si intende utilizzare e dalla lingua del documento. Come requisito minimo per l'editor è che supporta il linguaggio del documento. Ciò significa che se il tuo testo è in giapponese, fai attenzione a usare un editor che non li mostri (cioè nessuna entità per il documento stesso). Se è inglese, puoi persino usare un vecchio editor simile a vim e usare entità solo per il relativo

Inoltre, scrivo personalmente entità per personaggi invisibili e quelli che sembrano simili a standard-ascii e sono quindi facilmente confusi. Ad esempio, c'è u1173 (che sembra un trattino in alcuni set di caratteri) o u1175, che assomiglia alla barra verticale. Userei entità per quelli in ogni caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top