Christian: print gibt mal iso, mal utf-8 aus.

Hallo,

mit den Zeichensätzen werde ich noch verrückt.

In welcher Kodierung gibt print einen String aus?

Ich habe ein CGI-Skript, dessen Quelltext ISO-8859-1 kodiert ist. Das Skript liest Daten von einer Webseite, die UTF-8 kodiert ist und gibt diese Daten wieder aus.

Nun habe ich einen print-Befehl:
print "hinzugefügt: $daten\n";

Die $daten kommen von der UTF-8-kodierten Seite. Nun gibt print meistens ISO-Kodierung aus, aber manchmal kommt auch UTF-8 heraus. Im Browser gibt das natürlich hässliches Zeug.

Von UTF-8 nach ISO konvertieren möchte ich nicht, es könnte ja was verloren gehen.
Was kann ich also nun tun, damit mein ISO-Quelltext im Browser in UTF-8 ankommt? Alle meine Zeichenketten explizit nach UTF-8 konvertieren will ich auch nicht.

Grüße
Christian

  1. Ich grüsse den Cosmos,

    In welcher Kodierung gibt print einen String aus?

    Also wenn ich das richtig im Kopf hab:
    Auf der Konsole den Zeichensatz, deri m Syrtem eignestellt ist
    Im Browser den Zeichensatz, der im Browser eingestellt ist oder alternastiv der, der im Header gesendet wurde.

    Möge das "Self" mit euch sein

    --
    Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    1. Hallo

      Im Browser den Zeichensatz, der im Browser eingestellt ist oder alternastiv der, der im Header gesendet wurde.

      Umgekehrt ist es richtig. Die Einstellung im Header hat vorrang und nur wenn die fehlt, dann dröselt sich der Browser das aus der Datei raus.

      Herzliche Grüße
      Wolfgang Uhr

      1. Hallo,

        anscheinend hat nur ein
        binmode(STDOUT, ':utf8');
        am Anfang gefehlt.

      2. Ich grüsse den Cosmos,

        Umgekehrt ist es richtig. Die Einstellung im Header hat vorrang und nur wenn die fehlt, dann dröselt sich der Browser das aus der Datei raus.

        Hast du natürlich recht, ich hab mich missverständlich ausgedrückt. Ich wollte sagen, der im Browser eingestellte Zeichensatz, falls keiner im Header gesendet wurde, ansonsten der, der im Header gesendet wird ;)

        Möge das "Self" mit euch sein

        --
        Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...