Ich scrape eine Webseite und extrahiere einen bestimmten Abschnitt daraus. Dieser Abschnitt enthält Anführungszeichen (, Zeichen 146). Ich versuche, meine extrahierten Daten in eine Textdatei zu drucken, aber es gibt mir ’
anstelle des Anführungsstrichs. Ich habe folgendes versucht:Codierungsmodul und Anführungszeichen
$content =~ s/’/'/g;
my $invComma = chr 146; $content =~ s/$invComma/'/g;
$content =~ s/\x{0092}/'/g;
Nichts davon gearbeitet hat. Ich kann nicht decode('UTF-8', $content)
, weil es breite Zeichen hat. Wenn ich versuche, encode('UTF-8', $content)
die ’
ändert sich stattdessen zu ’
. Ich habe auch bereits use utf8
versucht, ohne Wirkung.
Ich weiß, dass mein Textdateibetrachter Anführungszeichen anzeigen kann, weil ich einen zu einer Testdatei ausgedruckt und geöffnet habe. Das Problem ist daher in meinem Skript.
Was mache ich falsch, und wie repariere ich es?
UPDATE: Ich bin in der Lage $content =~ s/’/'/g
, es zu tun mit einem einfachen Apostroph zu ersetzen, aber ich weiß immer noch nicht, warum es nicht anders geht. Ich möchte auch eine Lösung, die das Problem tatsächlich löst, anstatt nur eines der Symptome zu lösen.
UPDATE 2: Ich habe von hobbs informiert worden, dass der Charakter tatsächlich U+2019 RIGHT SINGLE QUOTATION MARK
ist und änderte meine regex chr 0x2019
zu verwenden, die jetzt funktioniert.
Wie auch immer Sie den Inhalt der Webseite abrufen, es interpretiert die Codierung falsch - aber Sie haben diesen Teil des Codes nicht in Ihre Frage aufgenommen. – hobbs
Ich verwende LWP :: Simple-Methode get (_URL_). Was würdest du stattdessen empfehlen? – Lilith
Sind Sie sicher, dass das _invertierte Komma_ 146 ist? Ich kopiere es einfach von meinem OP in meinen Editor, speichere es, habe "hexdump -C" und habe "e2 80 99". – PerlDuck