Le entità denominate in HTML sono ancora necessarie nell'era dei browser compatibili con Unicode?

StackOverflow https://stackoverflow.com/questions/25132

Domanda

Ho programmato molto in PHP negli ultimi anni e una cosa che continua a infastidirmi è il debole supporto per le stringhe Unicode e multibyte (a dire il vero, nativamente non ce n'è).Ad esempio, "htmlentities" sembra essere una funzione molto utilizzata nel mondo PHP e l'ho trovato assolutamente fastidioso quando ti sforzi di mantenere ogni stringa localizzabile, memorizzi solo UTF-8 nel tuo database, fornisci solo UTF -8 pagine web ecc.All'improvviso, da qualche parte tra il tuo database e il browser c'è questa funzione irrimediabilmente ingenua che finge che ogni byte sia un carattere e rovina tutto.

Lo farei semplicemente Amore eliminare semplicemente questo tipo di funzioni, sembrano totalmente superflue. È ancora necessario oggigiorno scrivere 'ä' invece di 'ä'? Almeno il mio Firefox sembra perfettamente felice di visualizzare anche i glifi asiatici più strani purché siano serviti con una codifica corretta.

Aggiornamento: Per essere più precisi:Sono denominate entità necessarie per nient'altro che visualizzare tag HTML (come in "<" per "<")

Aggiornamento 2:

@Konrad:Stai dicendo che no, le entità nominate non sono necessarie?

@Ross:Ma non sarebbe meglio disinfettare l'input dell'utente quando viene immesso, per mantenere la logica di output libera da tali problemi?(assumendo, ovviamente, che sia possibile una sanificazione affidabile in ingresso, ma poi, in caso contrario, può essere in uscita?)

È stato utile?

Soluzione

Entità denominate in XHTML "reale" (cioècon application/xhtml+xml, piuttosto che quello usato più frequentemente text/html modalità compatibilità) sono scoraggiati.A parte i cinque definiti nello stesso XML (&lt;, &gt;, &amp;, &quot;, &apos;), dovrebbero essere tutti definiti nella DTD del particolare DocType che stai utilizzando.Ciò significa che il tuo browser deve supportare esplicitamente quel DocType, il che è tutt'altro che scontato.Le entità numerate, d'altro canto, richiedono ovviamente solo una tabella di ricerca per ottenere il carattere Unicode corretto.

Per quanto riguarda se hai bisogno di entità in questi giorni:puoi praticamente aspettarti che qualsiasi browser moderno supporti UTF-8.Pertanto, finché puoi garantire che il database, il markup e il server web siano tutti d'accordo a servirlo, abbandona le entità.

Altri suggerimenti

Se si utilizza XHTML, in realtà è consigliabile non utilizzare entità denominate ([citazione necessaria]).Alcuni browser (Firefox...), quando lo analizzano come XML (cosa che normalmente non fanno), non leggono i file DTD e quindi non sono in grado di gestire le entità.

Dato che è comunque buona pratica utilizzare UTF-8 come codifica se non ci sono ragioni convincenti per fare altrimenti, ciò significa solo che il creatore dei documenti ha bisogno di un editor decente che non solo possa gestire i documenti ma fornisca anche un buon modo per inserire i glifi dei subacquei.OS X non ha realmente questo problema perché la maggior parte dei glifi necessari può essere raggiunta tramite i tasti "alt" ma Windows non ha questa funzionalità.


@Konrad:Stai dicendo che no, le entità nominate non sono necessarie?

Precisamente.A meno che, ovviamente, non ci siano stupide restrizioni, ad es.driver di database legacy che soffocano su UTF-8 ecc.

Safari sembra avere problemi con alcuni glifi ma non con altri, potrebbe non essere così necessario ma probabilmente è meglio farlo, ovviamente questa è la mia opinione e non è supportata da altro che dalle mie osservazioni.

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