2008-11-25 9 views
16

mi piacerebbe per determinare programatically la codifica di una pagina tramite JavaScript, o qualche altra API da un browser. La ragione per cui voglio questa informazione è perché sto tentando di sfogliare i browser più importanti su quali codifiche dei caratteri supportano, e ovviamente solo perché ho inviato l'appropriato "Content-Type" non significa che il browser farà la cosa giusta con la codifica . Qualsiasi altro metodo possibile sarebbe benvenuto, ma preferirei non fare clic su "Informazioni sulla pagina" per 50+ codifiche di caratteri.Ottenere la codifica della pagina/iframe tramite JavaScript

+0

perché hai bisogno di queste informazioni? Non vedo cosa ti compra? Nota, anche il supporto di una codifica non significa troppo. Ad esempio, IE supporta i set di caratteri UTF-8 ... ma non può restituire tonnellate di caratteri speciali che altri browser possono. Che cosa hai intenzione di fare con questi dati una volta raccolti? – scunliffe

+0

Se si hanno errori di codifica nei moduli, può essere utile sapere quale charset il browser pensa che sia la pagina. – joar

risposta

23

JavaScript può segnalare solo alcune delle cose che sono in corso. La maggior parte dei browser non ti mostra abbastanza impostazioni utili per farti basare qualsiasi test hardcore.

ci sono cose come document.inputEncoding, document.characterSet (non IE), document.charset, e document.defaultCharset (IE) che potrebbe ottenere una parte del cammino lì. Ma questi potrebbero essere traballanti quanto il supporto reale. Cioè, se un browser "pensa" supporta una codifica ma in realtà non lo fa, non è qualcosa che vuoi sapere?

Penso che la soluzione migliore sia impostare una pagina di test dinamica con alcuni caratteri abbastanza difficili (o un set di test veramente grande), caricare il test in un browser, fare in modo che il browser riporti la stringa ID del browser, le impostazioni di codifica , richiesta di codifica originale e contenuti di testElement.innerHTML che è possibile verificare in base ai risultati previsti.

+7

'document.characterSet' è nelle versioni più recenti di IE (da IE 9). È completamente sicuro da usare ora, a meno che non sia davvero necessario supportare browser molto vecchi. –

4

La risposta originale è abbastanza vecchio ora e il supporto per document.characterSet è migliorata notevolmente.

>>> document.characterSet 

IE 11:

"utf-8" 

Firefox 52, Chrome 55 e Chrome su Android, Safari 10:

"UTF-8" 

Così sembra che per la maggior parte degli scopi si può fare affidamento su queste informazioni , risolvendo il caso diverso. Nel mio caso è stato utile raccogliere queste informazioni a scopo di monitoraggio.

Problemi correlati