2008-11-25 13 views
16

Ich möchte die Kodierung einer Seite über JavaScript oder eine andere API von einem Browser programmatisch bestimmen. Der Grund, warum ich diese Informationen haben möchte, ist, weil ich versuche, die wichtigsten Browser mit den von ihnen unterstützten Zeichenkodierungen zu fuseln, und natürlich nur, weil ich den passenden "Inhaltstyp" gesendet habe, bedeutet das nicht, dass der Browser das Richtige tut . Alle anderen möglichen Methoden wären willkommen, aber ich würde lieber nicht auf "Page Info" für mehr als 50 Zeichencodierungen klicken.Kodierung von Seite/Iframe über JavaScript erhalten

+0

Warum benötigen Sie diese Informationen? Ich sehe nicht, was es dir kauft? Beachten Sie, dass die Unterstützung einer Codierung nicht zu viel bedeutet. Zum Beispiel unterstützt der IE UTF-8 Zeichensätze ... kann aber nicht Tonnen von Sonderzeichen, die andere Browser können. Was werden Sie mit diesen gesammelten Daten machen? – scunliffe

+0

Wenn Sie in Formularen Codierungsfehler haben, kann es nützlich sein zu wissen, welcher Zeichensatz der Browser für die Seite hält. – joar

Antwort

23

Javascript kann nur einige der Dinge melden, die vor sich gehen. Die meisten Browser stellen Ihnen nicht genügend nützliche Einstellungen zur Verfügung, auf die Sie Hardcore-Tests anwenden können.

Es gibt Dinge, wie document.inputEncoding, document.characterSet (nicht IE), document.charset und document.defaultCharset (IE), die Ihnen einige der Weg dorthin gelangen könnten. Aber diese könnten genauso flockig sein wie die tatsächliche Unterstützung. Das heißt, wenn ein Browser "denkt", dass er eine Codierung unterstützt, aber nicht wirklich, ist das nicht etwas, das Sie wissen wollen?

Ich denke, Ihre beste Wette ist es, eine dynamische Testseite mit einigen ziemlich schwierigen Zeichen (oder einem wirklich großen Test-Set) einzurichten, Test in einem Browser laden, Browser-Browser-ID-String zurücksenden, Einstellungen kodieren , ursprüngliche Kodierungsanfrage und Inhalt von testElement.innerHTML, die Sie dann gegen erwartete Ergebnisse verifizieren können.

+7

'document.characterSet' ist in den neuesten Versionen von IE (seit IE 9). Es ist absolut sicher, es zu benutzen, es sei denn, Sie müssen wirklich alte Browser unterstützen. –

4

Die ursprüngliche Antwort ist jetzt ziemlich alt und Unterstützung für document.characterSet hat sich stark verbessert.

>>> document.characterSet 

IE 11:

"utf-8" 

Firefox 52, Chrome 55 und Chrome auf Android, Safari 10:

"UTF-8" 

So scheint es, dass für die meisten Zwecke können Sie auf diese Informationen verlassen , Fixieren des anderen Falles. In meinem Fall war es nützlich, diese Informationen für Tracking-Zwecke zu sammeln.