Hallo zusammen :)
Danke für eure Antworten. Ich hab eben bemerkt, dass ich eine Ungenauigkeit in meinem vorherigen Posting hatte, deshalb kam wohl nicht die eigentliche Frage an.
Also nochmal: Ich möchte Perl mitteilen, in welchem Encoding meine Literale, bzw. meine hart kodierten Strings, innerhalb des Quelltextes vorliegen.
Das allerdings ist die Gretchenfrage, wie Du mit Perl ermittelst, welche Codierung vorliegt. Im besten Fall weißt Du es als Scriptautor selber,
Ich möchte die Kodierung ja nicht mit Perl ermitteln, sondern ich _kenne_ die Kodierung und diese Kodierung möchte ich am besten fest in der Datei stehen haben, sodass sie nicht verloren gehen kann.
Mir ist nun ein besseres Beispiel eingefallen. Sei da nun ein Programmierer, der seinen Code in iso-8859-15 schreibt und dann auch mal das Euro-Zeichen in einem Literal verwendet. Dann gibt er sein Skript einem anderen Programmierer und der denkt es ist iso-8859-1. Dann kommt eben an mancher Stelle kein Euro-Zeichen an.
Oder genauer: Falls die Ausgabe z.B. nach UTF-8 konvertiert wird, muss Perl doch wissen, dass in diesem Skript iso-15 gemeint ist, und deshalb das Byte \xA4 (Euro-Zeichen) in einen anderen Codepoint konvertiert werden muss, als wenn iso-1 verwendet würde.
Hoffe, das wird jetzt klarer, sonst gebe ich bald auf :)
ist die Frage nach dem charset für die Ausgabe, und die musst Du festlegen. Liegen die Daten in ISO-8859-4 vor, so teile dies STDOUT mit. Dafür gibt's das open-Pragma.
Das open-Pragma war mir bisher unbekannt, ich habe immer binmode() verwendet, um ein Encoding für einen Stream festzulegen. Das hat auch immer funktioniert. Ich sehe auch noch keine Vor- oder Nachteile, sondern nur eine weitere Möglichkeit, das zu bewerkstelligen. Kannst du da vielleicht noch was zu sagen? Danke.
Viele Grüße
Christian