Thread HTML::Parser und substr() (46 answers)
Opened by GwenDragon at 2023-05-09 13:09

Linuxer
 2023-05-12 14:07
#194854 #194854
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Das Thema ist nicht einfach mit pauschalen Aussagen beschrieben.

2023-05-11T14:03:44 rosti
... Das gilt auch für die Scriptdatei selbst, lenght "ä" liefert per Default also 2.


Das stimmt meiner Meinung so ohne Zusatz nicht.
Denn bereits mit der Einstellung Deines Editors gibst Du die Kodierung der Skriptdatei vor.
Somit ist das davon abhängig, was Dein Editor für eine Kodierung eingestellt hat und gemäß welcher Kodierung die Bytesequenz in die Datei geschrieben wird.

Wie ist also Dein Default definiert? Denn der bestimmt, was genau bereits in Deiner Skriptdatei passiert!

Bei einer Datei, die mit "latin1"- oder "latin9"-Kodierung (oder "iso-8859-1" oder "iso-8859-15") gespeichert worden ist, liefert length("ä") auch nur eine 1.

Aber wenn Deine Skriptdatei mit "utf8"-Kodierung geschrieben worden ist, dann liefert length nur dann "2", wenn Du es versäumt hast, dass im Code zu hinterlegen (und Du kein use utf8; im Code verwendest (warum auch immer)). Denn in diesem Fall wird das "ä" gemäß "utf-8" Kodierung geschrieben.

Code (perl): (dl )
1
2
3
4
5
6
#! /usr/bin/env perl
use strict;
use warnings;
use 5.010;

say length("ä");


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
$ file -i /tmp/t.pl ; perl /tmp/t.pl
/tmp/t.pl: text/plain; charset=iso-8859-1
1

# Datei rekodiert zu utf-8
$ file -i /tmp/t.pl ; perl /tmp/t.pl
/tmp/t.pl: text/plain; charset=utf-8
2

# Datei editiert und ein "use utf8;" eingefügt
$ file -i /tmp/t.pl ; perl /tmp/t.pl
/tmp/t.pl: text/plain; charset=utf-8
1
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread HTML::Parser und substr()