2012-03-25 17 views
0

Ich habe während der Tests einige Dinge bemerkt.
Die "meisten Dinge" betreffen die Zeichencodierung.JavaScript-Zeichencodierung + Internet Explorer 9-Codierung

Für jeden Test habe ich eine HTML-Seite in meinem Internet Explorer 9 Webbrowser geladen.
Meine HTML-Seite ist in UTF-8 codiert.
Hier ist der Code meiner HTML-Seite:

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
<script type="text/javascript"> 
    var strChaine = "été"; 
    alert(strChaine.charCodeAt(0) + 
      " " + strChaine.charCodeAt(1) + 
      " " + strChaine.charCodeAt(2) + 
      " " + strChaine.charCodeAt(3) + 
      " " + strChaine.charCodeAt(4)); 
</script> 
</head> 
<body> 

</body> 
</html> 

Die HTML-Seite enthält JavaScript-Code ein Warnfeld angezeigt werden soll.

Vor jedem Test habe ich eine bestimmte Kodierung in IE9 gesetzt, indem ich mit der rechten Maustaste klicke und dann eine Option im Kodierungsmenü anwähle.

Test 1

Für diesen Test IE9 Codierung auf UTF-8 gesetzt.
Die Alarmbox hat angezeigt: 233 116 233 NaN NaN

Es scheint mir seltsam.
Da meine HTML-Seite in UTF-8 kodiert ist und IE9 meine HTML-Seite mit UTF-8 entschlüsselt, erwarte ich folgendes: 195 169 116 196 116
0d195 0d169 0d116 0d196 0d116 ist die dezimale UTF-8-Darstellung der Schnur "été".
0xC3 0xA9 0x74 0xC3 0xA9 ist die hexadezimale UTF-8-Repräsentation.

Kann jemand den wirklich angezeigten Inhalt in der Alarmbox rechtfertigen?

Test 2

Für diesen Test IE9 Codierung Occidental Alphabet (ISO) festgelegt wurde.
Die Alarmbox wurde angezeigt: 195 169 116 195 169

Wieder scheint es mir seltsam.
Ich habe das Ergebnis, das ich für Test 1 erwarte.

Kann jemand den Inhalt rechtfertigen, der in der Alarmbox angezeigt wird?

Antwort

2

Die Zeichenfolge "été" enthält drei Zeichen mit den Unicode-Codenummern, die Ihr Skript anzeigt. Dies hängt nicht von der Zeichencodierung ab. JavaScript-Code arbeitet mit Zeichen oder, genauer gesagt, mit Unicode-Code-Einheiten, nicht mit den Bytes, die zur Darstellung des Zeichens verwendet wurden.

Wenn die tatsächliche Kodierung UTF-8 ist und Sie einen Browser damit behandeln, dass es in einer 8-Bit Kodierung ist, was Sie wahrscheinlich mit "Westalphabet (ISO)" meinen, interpretiert der Browser die Oktette von die UTF-8-Darstellung, als ob jede von ihnen eine Zeichen

darstellt