Thread Encoding (4 answers)
Opened by leo11 at 2009-05-30 18:45

leo11
 2009-05-31 09:41
#122134 #122134
User since
2008-08-14
250 Artikel
BenutzerIn
[default_avatar]
2009-05-30T20:51:35 murphy
Wenn Du eine ähnliche Art von Zeichensatzerkennung in Perl machen möchtest, gibt es dafür das Modul CPAN:Encode::Guess.

Ich habe gerade mal mit dem Bsp. aus der Doku experimentiert:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl

use strict;
use warnings;

use Encode;
use Encode::Guess;

my $data='pâté';
#my $data='pate';

my $enc = guess_encoding($data, qw/ascii utf8 utf16 iso-8859-1/);
ref($enc) or die "Can't guess: $enc"; # trap error this way
#my $utf8 = $enc->decode($data);
# or
my $utf8 = decode($enc->name, $data);

print $utf8,"\n\n";

Das Bsp. bringt mir den Fehler:
UTF-16:Unrecognised BOM 70e2 at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/Encode/Guess.pm line 135.

Lass ich utf16 weg geht es. Wie kann ich mir eine Liste der unterstützen Zeichensätze ausgeben lassen? So etwas wie iconv --list.

Die Funktionsweise des Beispiels ist mir auch nicht klar. Ich hätte erwartet, dass ich eine Meldung bekomme, welche Zeichenkodierung der String hat. So wie bei file -ik. Wie macht man dass? Aus der Doku werd ich nicht schlau.

Mein Ziel ist ein Oneliner der mir die Kodierung eines Files angibt wie es file -ik tut. Optimal wäre, wenn er auch bei XML-Dateien geht.
Last edited: 2009-05-31 09:43:00 +0200 (CEST)

View full thread Encoding