2017-05-28 3 views

Antwort

0

Wenn ich verstehe, LWP::Simple ‚s example script und implementation richtig, ich glaube, du bist gemeint einen Fall, wie dies entweder zu handhaben ...

.force_encoding Festlegen einer weniger strengen Codierung zu verwenden:

use LWP::Simple; 
my $lwp = LWP::Simple.new; 

$lwp.force_encoding = 'utf8-c8'; 
say $lwp.get('http://www.google.com'); 
  • utf8 (Vorgabe) = UTF8, mit ungültigem Bytes, eine Ausnahme zu verursachen.
  • utf8-c8 = UTF8 mit Pass-Through für ungültige Bytes.

.force_no_encode Einstellung das Ergebnis als ein erhalten Buf:

use LWP::Simple; 
my $lwp = LWP::Simple.new; 

$lwp.force_no_encode = True; 
say $lwp.get('http://www.google.com'); 

Ich kann es allerdings nicht testen, da LWP::Simple (mit zef installiert ist) nicht überhaupt nicht funktioniert für mich. (Ich bin mir nicht sicher, ob das Problem mit meinem Perl 6 Setup ist.)

Mein Eindruck ist, dass dieses Modul gerade nicht sehr poliert ist. Es ist nicht nur das Fehlen von Dokumentation – die API scheint auch teilweise aus dem Perl 5-Modul (sogar Teile, die in Perl 6 weniger sinnvoll) kopiert werden, und teilweise von verschiedenen Kommittenten entwickelt Features hier und da hinzufügen, ohne viel Design Fokus.

+0

Die utf-c8-Codierung funktioniert hier nicht, weil es Kuriositäten in der Dekodierung zu schützen, ein d force_no_encode gibt einen Puffer zurück, den ich noch dekodieren müsste. Ich denke nicht, dass es ein Problem mit LWP :: Simple ist, so sehr wie Perls begrenzte Fähigkeit, zu dekodieren. –

+0

Also decode als latin-1 oder entpacken * A – ugexe

+0

Das würde funktionieren, wenn es Latin-1 oder ASCII wäre, aber es ist nicht. –

0

Von #perl6 earlier today:

ist der Decoder API eine Option, um zu entscheiden, ob ein Fehler werfen oder einfügen, wenn es ungültige Bytes findet?

Antwort des jnthn war:

Im Moment ist es

jetzt einen Fehler immer wirft Bis [es war keine gute Zeit, um die Option zu aktivieren]

jetzt Während [ ist eine bessere Zeit]

Verwandte Themen