Schrift
[thread]9014[/thread]

Datei auf UTF-8 prüfen, wie?

Leser: 2


<< >> 5 Einträge, 1 Seite
rinoin
 2007-05-16 20:09
#76737 #76737
User since
2004-03-12
7 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich möchte unter Windows XP in einem Perl-Programm prüfen,
ob die 2 eingelesenen Dateien im UDF-8-Format sind und es soll gemeldet werden, wenn es eine andere Codierung ist.

Ich habe schon mit Encode::Guess probiert, ab ich bin nicht darauf gekommen, wie man das einsetzt.

Kann mir da jemand helfen oder kann man das auf einem anderen Weg lösen?

Vielen Dank und Gruß
rinoin
nepos
 2007-05-16 21:58
#76738 #76738
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo du!

Habs selbst noch nie gebraucht, aber soweit ich die Man-Page verstehe, sollte das in etwa so gehen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/perl

use strict;
use warnings;
use Encode::Guess;

my $file = "c:\deine\datei";
my $data;

# Datei öffnen
open(FILE, '<', $file)
  or die "Fehler beim Öffnen von $file : $!\n";

# Zeilen-Trenner quasi auf undef setzen, damit kannst du die komplette Datei in einen Skalar lesen - siehe perldoc perlvar unter INPUT_RECORD_SEPARATOR
{
  local $/;
  $data = <FILE>;
}

close(FILE);

# Das Modul die Kodierung erraten lassen, wobei du sagst, dass du nur UTF-8 haben willst.
my $decoder = guess_encoding($data, qw/utf8/);

# Falls Encode::Guess eine Referenz zurückgibt, scheint es sich um UTF-8 zu handeln
if (ref $decoder) {
  print "Datei scheint in UTF-8 vorzuliegen\n";
}
else {
  print "Datei scheint kein UTF-8 zu sein.\n";
}


Ich hoffe mal, das passt so halbwegs. Habs nur mal auf die Schnelle runtergetippt, ohne was zu testen.

Edit: Hab den Type bei "use warnings;" mal gefixt.\n\n

<!--EDIT|nepos|1179348604-->
MisterL
 2007-05-16 23:23
#76739 #76739
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Funktioniert erstklassig, wenn man eine Zieldatei angibt.
Aber es muss
Code: (dl )
use warnings;
statt use warnigs; heissen ;-)

Gruss MisterL, der scheinbar alle Dateien mit UTF-8 zu haben scheint...
“Perl is the only language that looks the same before and after RSA encryption.”
nepos
 2007-05-17 00:48
#76740 #76740
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Sorry, sagte ja ungetestet und auf die Schnelle getippelt ;)
Danke fürs verbessern :)
rinoin
 2007-05-17 07:51
#76741 #76741
User since
2004-03-12
7 Artikel
BenutzerIn
[default_avatar]
Hallo nepos,

das Programm von Dir klappt prima.
Vielen Dank!

Gruß
rinoin
<< >> 5 Einträge, 1 Seite



View all threads created 2007-05-16 20:09.