Frage

Ich bin Modifizieren eine reife CGI-Anwendung in Perl geschrieben und die Frage der Inhaltscodierung hat kommen. Der Browser meldet, dass der Inhalt iso-8859-1 codiert ist und die Anwendung iso-8859-1 als charset in dem HTTP-Header wird erklärt, aber immer scheint nicht zu eigentlich tun die Codierung. Keiner der verschiedenen Techniken Codierung in der Perldoc Tutorials beschrieben ( Encode , Encoding , a href = < "http://perldoc.perl.org/open.html" rel =" nofollow noreferrer „> Öffnen ) wird im Code verwendet, damit ich ein wenig verwirrt, bin, wie das Dokument tatsächlich verschlüsselt wird.

Wie bereits erwähnt, die Anwendung recht ausgereift ist und früher wahrscheinlich viele der aktuellen Codierverfahren. Kennt jemand von Alt- oder veralteten Techniken soll ich suchen? Um welche Codierung ist Perl übernehmen / default, wenn keine Richtung des Entwicklers wird?

Danke

War es hilfreich?

Lösung

Standardmäßig behandelt Perl Strings als Byte-Sequenzen, so dass, wenn Sie aus einer Datei lesen und drucken, das zu STDOUT, wird es die gleiche Byte-Sequenz erzeugen. Wenn Ihre Vorlagen sind Latin-1, Ihr Ausgang wird auch Latin-1 sein.

Wenn Sie einen String in Textstring-Kontext verwenden (wie bei uc, lc usw.) perl übernimmt Latin-1 Semantik, es sei denn, die Zeichenfolge vor decodiert worden sind.

Mehr über Perl, charsets und Kodierungen

Andere Tipps

Perl wird nichts übernehmen, aber der Browser in der Regel auf Vermutungen, daß die Codierung beruht vorausgesetzt. Die Dokumente sind direkt ausgegeben, so wie sie geschrieben wurden, wenn keine der Codierungstechniken verwendet wird.

Sie können die charset im HTTP-Content-Type-Header angegeben werden.

Der erste Platz, den ich sehen würde, ist die Serverkonfiguration. Wenn Sie den Inhalt nicht-kodierenden Header im Programm zu setzen, haben Sie wahrscheinlich Kommissionierung des Servers Vermutung auf.

Führen Sie das Skript getrennt von dem Server zu sehen, was seine tatsächliche Leistung ist. Wenn der Server die Ausgabe von einem CGI-Programm wird (das ist NPH nicht), der Server die Header für alles behebt bis es denkt, fehlt, bevor er sich an den Client sendet.

Wenn der Browser meldet den Inhalt als iso-8859-1, vielleicht Ihr Perl-Skript die richtigen Header nicht ausgegeben hat das charset angeben?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top