Thread Byte raw format in String umwandeln (Glib::IO::File->get_contents) (18 answers)
Opened by Max_Perlbeginner at 2016-05-31 10:53

Gast janus
 2016-05-31 17:05
#184859 #184859
Wie ich bereits schrieb: In Dateien sind Bytes gespeichert. D.h., alles was in eine Datei rein- oder rausgeht (IO) sind Bytes. Bytes kennen gar keine Zeichenkodierung, Bytes wissen nicht einmal ob sie Zeichen sind oder nicht.

Erst der Anwender legt fest, welche Kodierung eine bestimmte Bytefolge ist oder sein soll. So nimmst Du Bytes aus einer Datei und sagtst Perl "das sind jetzt keine Bytes sondern utf-8-kodierte Zeichen" wenn Du zeichenorientiert arbeiten willst.

Oder Du nimmst die Bytes so wie sie sind und arbeitest damit byteorientiert. Beim Zurückschreiben in die Datei musst Du auf JEDEN FALL wieder byteorientiert arbeiten, siehe oben warum.

Und zum Wechsel von byte- auf zeichenorientierung gibt es mehrere Möglichkeiten. Das Pragma use utf8; macht nur dann Sinn, wenn die Bytes in der Sciptdatei zeichenorientiert verarbeitet werden sollen. Eine andere Möglichkeit zur Wiederherstellung der Byteorientierung ist use bytes;, darüber hinaus kannst Du auch direkt am IO-Layer umschalten und dann gibt es noch use Encode:
Last edited: 2016-05-31 17:11:22 +0200 (CEST)

View full thread Byte raw format in String umwandeln (Glib::IO::File->get_contents)