Hallo,
ich möchte HTML-Entities aus einem String entfernen:
use HTML::Entities; print decode_entities("Wir möchten dafür 10 € haben");
Dabei erhalte diese Fehlermeldung.
Wide character in print at ...
Diese FM erscheint, weil die Entities in das Perl-interne Codierungs-Format umgewandelt wurden und somit nicht für die Ausgabe auf STDOUT geeignet sind. Es gibt 2 Möglichkeiten:
- use Encode; und mit $octets = encode('UTF-8', $characters, Encode::FB_CROAK); die Oktetten wiederherstellen, da müsstest Du jedoch jeden String einzeln anfassen,
- use bytes; vor der print Ausgabe, das sorgt dafür daß die richtigen Bytesequenzen rausgehen.
MfG
PS:
Ich habe dann probiert, was an dem String 'falsch' sein könnte und bin dann darauf gestoßen, dass das "€" das Problem ist. Nur warum?
Die FM erscheint ab 3 Bytes (Oktetten). Bei den Umlauten die nur 2 Oktetten haben kommt sie nicht, das wird noch toleriert.