Thread XML::LibXML - "Malformed UTF-8 Character (fatal" vermeiden (11 answers)
Opened by Bob at 2011-05-28 13:48

Bob
 2011-05-28 13:48
#149222 #149222
User since
2011-05-21
6 Artikel
BenutzerIn
[default_avatar]
Hallo allerseits,

ich möchte – inzwischen mit LibXML (ist deutlich schneller als XPath) – XML-Dokumente parsen, auf deren Inhalt ich keinen Einfluss habe. Dafür habe ich eine Pipe. Nun scheint es leider vereinzelt vorzukommen, dass innerhalb eines Dokuments UTF-8 und ISO-Latin-1 vermischt sind. LibXML quittiert das in wenig charmanter Art und Weise mit "Malformed UTF-8 character (fatal) at ..." und tschüs. Von dem Vorhaben, die defekten Zeichensätze zu reparieren, habe ich mich inzwischen verabschiedet. Was in den Foren auch immer an Lösungsansätzen genannt wurde, ich habe es nicht geschafft, das zu implementieren. Meine letze Hoffnung wäre nun, Perl in solchen Fällen wenigstens vom Sterben abzuhalten. Gibt es da irgendeine Möglichkeit?

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl -w

use strict;
use warnings;
use Encode;
use encoding "utf8";
use XML::LibXML;

foreach(@files) {
  my $parser = XML::LibXML->new({recover => 2, suppress_errors => 1, suppress_warnings => 1, encoding => "utf8"});
  my $tree = $parser->load_html(location => $_);
  ...
}


Das ginge wohl in die richtige Richtung, aber wie sollte ich das hier implementieren?

Ratlos :-(

Bob

modedit Editiert von GwenDragon: Titel geändert
Last edited: 2011-05-28 14:32:38 +0200 (CEST)

View full thread XML::LibXML - "Malformed UTF-8 Character (fatal" vermeiden