Thread HTML::Entities - decode_entities() erzeugt kein Unicode sondern Latin1 (40 answers)
Opened by GwenDragon at 2024-03-19 12:49

barney
 2024-03-19 13:36
#195940 #195940
User since
2008-08-31
135 articles
BenutzerIn
[Homepage] [default_avatar]
Ja, das ist die Doku von CPAN:HTML::Entities ein bisschen ungenau. In deinem Beispiel kommt das 'ä' als latin-1 zurück. Bei der weiteren Verwendung in Strings `"⛄%s"`, die Perl intern als utf-8 kodiert, erfolgt automatisch ein Upgrade. Das kann man auch mit `utf8::upgrade()` erzwingen. Das Matching erfolgt in beiden Fällen auf Codepoint Ebene.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use strict; use warnings; use 5.020;
use utf8;
use HTML::Entities ();
use Devel::Peek;

my $s = HTML::Entities::decode_entities("ä");
Dump "⛄$s";
Dump $s;
utf8::upgrade($s);
say $s =~ /\xE4/;
Dump $s;
say $s =~ /\xE4/;


Der Standardtip ist dass man Eingangsdaten die UTF-8 kodiert reinkommen als allererstes dekodiert. Beim rausschreiben dann wieder kodiert.

modedit Editiert von GwenDragon: mod-Tag repariert
Last edited: 2024-03-20 10:12:06 +0100 (CET)

View full thread HTML::Entities - decode_entities() erzeugt kein Unicode sondern Latin1