Warum kann ich keine chinesischen Zeichen in die HTTP-Antwort von nodejs schreiben?

8

Hier ist mein kleiner Code:

%Vor%

Vorher habe ich nur res.end an "hallo world" gesendet und es hat gut funktioniert. Dann wollte ich mich ein wenig anpassen und änderte die "Welt" in das chinesische Äquivalent "世界" und änderte den Inhaltstyp "charset" in der Kopfzeile in "utf-8". Aber in Chrome und Firefox sehe ich das:

%Vor%

Erstaunlicherweise zeigt Opera (11.61) jedoch das korrekte Ergebnis hello 世界 . Ich möchte wissen, ob ich etwas im Code verpasst habe und warum dies geschieht. Danke Leute.

Ich denke, dieser Beitrag ähnelt meiner Situation, aber nicht genau.

    
Allan Ruin 06.05.2012, 12:20
quelle

3 Antworten

13

Das Problem liegt in der Zeichensatzspezifikation. Für mich funktioniert das mit dieser Änderung:

%Vor%

Getestet mit Chrome, Firefox und Safari.

Sie könnten auch in das node.js-Paket "express" schauen, das das Umschreiben Ihres Codes wie folgt ermöglicht:

%Vor%     
jjrv 06.05.2012, 12:28
quelle
2

content-encoding ist kein Zeichensatz, sondern eine Kodierung der HTTP-Antwort selbst

charset ist kein allgemeiner HTTP-Header

content-length ist hier nicht erforderlich

wie @jjrv sagte, du solltest 'Content-Type': 'text/plain;charset=utf-8' dort schreiben

    
alex 06.05.2012 12:38
quelle
0

涓栫晫 ist tatsächlich 世界 beim Kodieren von GB-18030 und wird dann als UTF-8 angezeigt. Wahrscheinlich wurden die Zeichen in dieser Kodierung gespeichert.

    
dda 22.05.2012 11:08
quelle

Tags und Links