UTF8 zu ASCII


chill0r55555

Mitglied
Hallo,
ich steh leider gerade mal wieder vor einem Problem. Und zwar möchte ich eine Textdatei (test.txt [diese Datei hat UTF8 Format]) in das ASCII Format wandeln.

Ich habe dazu was gefunden:

Code:
use Encode;
$text = decode('utf8', $text); //$text in ASCII wandeln
$text =~ s/[^!-~]/ /g; //Zeichen die keine ASCII Zeichen sind löschen
Leider komme ich gerade nicht weiter in dem Punkt wie ich die Datei einlese, anschließend wandle und zum Schluss als test_ascii.txt speichere.
Bin über jeden Tipp dankbar.

MfG



EDIT:

So ich habe es nun geschafft ein Skript zu basteln, leider klappt die Umwandlung
noch nicht so ganz *grübel*.

Code:
#!/usr/bin/perl -w

use strict;
use Encode;

my $datei="test.txt";
my $datei2="test2.txt";
my $file;
open($file,'>>',$datei2) or die $!;
close $file;
open($file,'<',$datei) or die $!;
my @datei= <$file>;
close $file;
for (my $i=0;$i<@datei;$i++){
	$datei[$i] = decode('utf8', $datei[$i]); # UTF8 decodieren
   $datei[$i] =~ s/[^!-~]/ /g;              # ASCII untypische Zeichen entfernen
	system ("echo '".$datei[$i]."' >> ".$datei2); # schreibe gewandelten Text in neue Datei
}
Nun ist es so das das Skript sehr langsam durchläuft. Und wie gesagt
die Umwandlung nicht passt. Aus "rück" wird "r ck". Vielleicht weis ja jemand
was mein Problem ist?!

Gruß
 
Zuletzt bearbeitet:

renee

Erfahrenes Mitglied
Das ganze geht viel einfacher. Dafür kann man die Layer in Perl verwenden...

Code:
#!/usr/bin/perl

use strict;
use warnings;

my $input = '/path/to/file.utf8';
my $output = '/path/to/file.txt';

open my $in, '<:encoding(utf-8)', $input or die $!;
open my $out, '>', $output or die $!;
print $out $_ while <$in>;
close $out;
close $in;
 

chill0r55555

Mitglied
Hallo,

erstmal danke für deine Hilfe. Dein Skript funktioniert.
Nur was ich gerade bemerkt habe, unter Linux funktioniert es nicht.
Unter Windows ist es kein Problem. Hast du vielleicht eine Ahnung an was
das liegen kann?

MfG & nochmals danke

EDIT:
Hallo nochmals,
ich habe nun das Skript auf einer anderen Linux Distribution getestet und es funktioniert nun. Ich denke es liegt an den unterschiedlichen Perl Versionen.
Ich werde nun das Thema als erledigt markieren.

Gruß
 
Zuletzt bearbeitet: