Thread Encoding
(4 answers)
Opened by leo11 at 2009-05-30 18:45 2009-05-31T07:41:23 leo11 Bereits ohne Blick in die Dokumentation fällt mir auf, dass $enc hier im Erfolgsfall ganz offensichtlich ein Objekt enthält, das die erratene Kodierung beschreibt, und dass man den Namen dieser Kodierung wohl über die Methode name des besagten Objektes abrufen kann. Quote Das ist allerdings doof. Es könnte fast sein, dass Du da auf einen Bug in Encode::Guess gestoßen bist, denn beim Erraten der Kodierung sollte eigentlich nicht einfach ein Fehler erzeugt werden. Quote Ein kurzer Blick in die Dokumentation fördert zu Tage, dass man mit der Methode encodings der Klasse Encode eine Liste aller unterstützten Kodierungen abrufen können müsste. Und in der Tat produziert der Befehl Code: (dl
)
perl -MEncode -le 'print for (Encode->encodings(":all"));' Quote Ich habe etwas herumgespielt und komme zu dem Schluss, dass Encode::Guess mit langen Listen möglicher zu ratender Kodierungen nicht gerade sehr zuverlässig funktioniert. Allerdings kann dir folgender Einzeiler, der versucht den Zeichensatz über STDIN verfütterter Daten zu erraten, vielleicht als Ausgangspunkt dienen: Code: (dl
)
perl -MEncode -MEncode::Guess -le 'my $enc = guess_encoding(<STDIN>, grep !m/^UTF-(?:16|32).*(?![BL]E)$/i, Encode->encodings(":all")); if (ref $enc) { print $enc->name } else { exit 1 }' When C++ is your hammer, every problem looks like your thumb.
|