Forums Neueste Beiträge
 

Behandlung UTF-8 Zeichen Linux/Solaris

14/01/2008 - 14:14 von Christoph Krempe | Report spam
Hallo,

ich bin über folgendes Problem gestolpert, für das ich keine Lösung
gefunden habe. Mein Programm ließt eine UTF-8-Datei ein und behandelt
den Inhalt zeichenweise:

use strict;
binmode(STDOUT, ":utf8");
use open ':utf8';

open ALG, "<", "eingabe";
while(<ALG>){
my $zeichen;
my @satz = split(//,$_);
foreach $zeichen (@satz) {
print $zeichen;
}
close(ALG);

Unter Linux (32bit) funktioniert das, unter Solaris (64bit) werden UTF-8-
Zeichen der Eingabedatei byteweise, nicht wie in perl vorgesehen
zeichenweise durch das "split" verarbeitet.

perl -v unter Solaris zeigt:
This is perl, v5.8.7 built for sun4-solaris

Weiß jemand warum?

Christoph
 

Lesen sie die antworten

#1 Moritz Lenz
14/01/2008 - 14:22 | Warnen spam
Hallo,

Christoph Krempe wrote:
Hallo,

ich bin über folgendes Problem gestolpert, für das ich keine Lösung
gefunden habe. Mein Programm ließt eine UTF-8-Datei ein und behandelt
den Inhalt zeichenweise:

use strict;
binmode(STDOUT, ":utf8");
use open ':utf8';

open ALG, "<", "eingabe";
while(<ALG>){



use Devel::Peek; # an den Anfang
Dump($_);
Und schick uns mal die Ausgabe davon

my $zeichen;
my @satz = split(//,$_);
foreach $zeichen (@satz) {
print $zeichen;
}
close(ALG);

Unter Linux (32bit) funktioniert das, unter Solaris (64bit) werden UTF-8-
Zeichen der Eingabedatei byteweise, nicht wie in perl vorgesehen
zeichenweise durch das "split" verarbeitet.

perl -v unter Solaris zeigt:
This is perl, v5.8.7 built for sun4-solaris

Weiß jemand warum?



Meine (nicht begründete) Vermutung ist, dass es am use open ':utf8' liegt.
Geht es denn, wenn du direkt mit open ALG, '<:utf8', "eingabe";
arbeitest und das use open ':utf8'; weglàsst?

Grüße,
Moritz


Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/

Ähnliche fragen