Thread String manipulation (30 answers)
Opened by Haselnuss992 at 2018-10-15 15:39

rosti
 2018-10-17 13:16
#188981 #188981
User since
2011-03-19
3199 Artikel
BenutzerIn
[Homepage]
user image
2018-10-17T10:15:26 Raubtier
Der Punkt ist doch, wenn du 160 Zeichen hast, dann können das auch mehr als 160 Bytes sein. Sobald die Zeichen in der Datei in einer variabel langen Kodierung wie UTF-8 oder UTF-16 gespeichert ist, kannst du eben nicht brutal 160 Bytes einlesen.

Es waren Umlaute im Beispielstring von Haselnuss992. Wir wissen nicht, wie das open-Kommando lautete, also ob da beispielsweise mit "<:utf8" geöffnet wurde. Wenn ich Buchstaben lese, würde ich nicht binär lesen.

Übrigens ist eine andere, meiner Meinung nach bessere Alternative, $/ zu setzen:
Code (perl): (dl )
my @entries = do { local $/ = \160; <$FH> }


Wenn man eine Datei mit open my $FH, "<:utf8", "file" or die $!; öffnet, liest es 160 Zeichen einer UTF-8 kodierten Datei. Also je nach Modus beim Dateiöffnen.


Sobald Du den Layer auf utf-8 schaltest, geht Deine Lösung übrigens in die Hose. Was eben daran liegt, daß Dateien keine Zeichen sondern Bytes speichern (ich wiederhole mich).

MfG

View full thread String manipulation