Thread Korrekter Umgang mit Fileencodings (3 answers)
Opened by pinwheel at 2015-07-11 12:56

pinwheel
 2015-07-11 12:56
#181540 #181540
User since
2015-07-11
3 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich muss eine Textdatei, von der das Fileencoding für mich im Vorfeld nicht bekannt ist, einlesen und verarbeiten. Versucht habe ich es (Minimalbsp) mit folgendem Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env perl

use strict;
use warnings;

my $test_file = "test.txt"; #ISO-8859 / UTF-8 codiert
my $test_handle;

open($test_handle, "<:encoding(UTF-8)", "$test_file");

while(my $line = <$test_handle>) {
print($line);
}


Die Datei test.txt könnte nun aber ISO-8859 oder UTF-8 codiert sein - beides kann auftreten. Wenn ich nun - wie oben gezeigt
Code: (dl )
open($test_handle, "<:encoding(UTF-8)", "$test_file");

verwende und test.txt ist UTF-8 codiert - läuft alles nach Wunsch. Ist dann aber text.txt ISO-8859 codiert, bekomme ich Fehler der Art
Code: (dl )
utf8 "\xD6" does not map to Unicode at ./test.pl line 11, <$test_handle> line 73.


Wie gehe ich dieses Problem an? Eine erschwerende Randbedingung könnte sein, dass nach Möglichkeit keine zusätzlichen Module verwendet werden sollen und die benötigte Perl-Version auch nicht zu neu sein darf (<= 5.10).

Bekommt man das irgendwie in den Griff?

--pinwheel
Last edited: 2015-07-11 14:57:58 +0200 (CEST)

View full thread Korrekter Umgang mit Fileencodings