2008-11-25 13 views
16

Chciałbym programowo określić kodowanie strony za pomocą JavaScript lub innego API z przeglądarki. Powodem, dla którego chcę te informacje, jest to, że próbuję pomieszać główne przeglądarki na temat obsługiwanych przez nich kodowań znaków, i oczywiście dlatego, że wysłałem odpowiedni "typ zawartości", nie oznacza, że ​​przeglądarka zrobi to, co trzeba z kodowaniem . Wszelkie inne możliwe metody byłyby mile widziane, ale wolałbym nie klikać "Informacje o stronie" dla ponad 50 kodowań znaków.Pobierz kodowanie strony/iframe przez JavaScript

+0

Dlaczego potrzebujesz tych informacji? Nie rozumiem, co cię kupuje? Uwaga, nawet obsługa kodowania nie oznacza zbyt wiele. Na przykład IE obsługuje zestawy znaków UTF-8 ... ale nie może renderować ton specjalnych znaków, które mogą mieć inne przeglądarki. Co zamierzasz zrobić z tymi danymi po ich zebraniu? – scunliffe

+0

Jeśli masz błędy kodowania w formularzach, przydatne może być określenie, jakiego zestawu znaków używa przeglądarka. – joar

Odpowiedz

23

Javascript może zgłaszać tylko niektóre z rzeczy, które się dzieje. Większość przeglądarek nie będzie udostępniać Ci wystarczająco przydatnych ustawień, abyś mógł oprzeć wszystkie testy hardcore.

Są rzeczy, takich jak document.inputEncoding, document.characterSet (bez IE) document.charset i document.defaultCharset (IE), który można dostać niektóre drogi tam. Ale mogą one być tak niestabilne, jak faktyczne wsparcie. Oznacza to, że jeśli przeglądarka "myśli" obsługuje kodowanie, ale tak naprawdę nie działa, czy nie jest to coś, co chcesz wiedzieć?

Myślę, że najlepiej jest skonfigurować dynamiczną stronę testową z dość trudnymi znakami (lub naprawdę dużym zestawem testowym), testem obciążenia w przeglądarce, mieć raport przeglądarki z powrotem ciąg id przeglądarki, ustawienia kodowania , oryginalne żądanie kodowania i zawartość testElement.innerHTML, którą następnie można zweryfikować w oparciu o oczekiwane wyniki.

+7

'document.characterSet' jest w najnowszej wersji IE (od IE 9). Jest całkowicie bezpieczny w użyciu, chyba że naprawdę potrzebujesz obsługiwać naprawdę stare przeglądarki. –

4

Oryginalna odpowiedź jest dość stara, a wsparcie dla document.characterSet znacznie się poprawiło.

>>> document.characterSet 

IE 11:

"utf-8" 

Firefox 52, Chrome 55 i Chrome na Androida, Safari 10:

"UTF-8" 

Więc wydaje się, że dla większości zastosowań można polegać na tej informacji , ustalanie różnych przypadków. W moim przypadku użyteczne było zebranie tych informacji do celów śledzenia.

Powiązane problemy