Schrift
[thread]10520[/thread]

Unicode

Tags: Ähnliche Threads

Leser: 4


<< >> 9 Einträge, 1 Seite
Togad
 2007-10-05 15:24
#100347 #100347
User since
2007-09-20
21 Artikel
BenutzerIn
[default_avatar]
Hi

wie kann ich mit Perl eine Text Datei mit Unicode speichern?

Gibt es da kein Modul zu??
AndreasM
 2007-10-05 15:45
#100351 #100351
User since
2005-10-08
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wahrscheinlich suchst Du etwas in dieser Richtung:

Code: (dl )
1
2
3
4
5
6
7
    use Encode;
open(my $iliad,'<:encoding(iso-8859-7)','iliad.greek');
open(my $utf8,'>:utf8','iliad.utf8');
my @epic = <$iliad>;
print $utf8 @epic;
close($utf8);
close($illiad);


http://search.cpan.org/~dankogai/Encode-2.23/lib/E...

Grüße

AndreasM
Togad
 2007-10-05 15:49
#100352 #100352
User since
2007-09-20
21 Artikel
BenutzerIn
[default_avatar]
ich bin mir nicht sicher, aber ist das nicht die andere richtung?

Mein Problem: Ich habe verscheidene Verzeichnispfade, und will die in einer Datei speicher. Allerdings nicht im ANSII Format sondern im Unicode Format.

wofür steht denn eigentlich dieses utf8? Ich suche schon bei search.cpan.org aber ich werde da nicht so schlau aus den sachen.
nepos
 2007-10-05 15:54
#100353 #100353
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
ptk
 2007-10-06 00:32
#100378 #100378
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Es gibt kein "Unicode"-Format. Es gibt nur Unicode-Encodings wie utf-8, utf-16, ucs-2, iso-8859-1 etc.
Togad
 2007-10-09 12:37
#100541 #100541
User since
2007-09-20
21 Artikel
BenutzerIn
[default_avatar]
Ok in der zwischen Zeit habe ich es geschaft mit use Encode und binmode meine Datei so umzuwandeln, wie ich sie brauche. Jetzt habe ich ein weiteres Problem.

Wie kann ich das ganze machen ohne Encode zu verwenden? Das Programm soll auf perl 5.6.1 laufen.

Wenn ich mir die Dateien im Hex modus angucke, dann muss ich einfach nur hinter jedes Zeichen ( zwei Hexa Ziffern zB. 43) zwei Hexadezimale nullen schreiben.

aus 43 3A 5C 68 soll also 43 00 3A 00 5C 00 6B 00 werden.

Ich habe gerade versuch das mit einem Reg ausdruck zu lösen, aber das funktioniert anscheinend nicht.
Code (perl): (dl )
1
2
3
4
5
binmode(OUT);

while (my $line =<IN>) {
        $line =~ s/(x..)/$1x00/;
        print (OUT $line);


Könnt ihr mir da Helfen??
renee
 2007-10-09 14:11
#100555 #100555
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Schau Dir mal CPAN:Unicode::Map8 oder ähnliche Module an...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Togad
 2007-10-09 14:33
#100558 #100558
User since
2007-09-20
21 Artikel
BenutzerIn
[default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
my @HEX = (0..9 , 'A'..'F');
$println =~ s/\x0A/\x0D\x0A/g; 
foreach my $i  (@HEX) {
    foreach my $j  (@HEX) { 
         $println =~ s/(\x$i$j)/$1\x00/g;
    }#foreach
}#foreach



habe es geschafft. Trotzdem Danke
GwenDragon
 2007-10-09 16:05
#100563 #100563
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Die Kodierungsreihenfolge des Low-Byte und High-Byte ist aber systemabhängig!
http://de.wikipedia.org/wiki/Byte-Reihenfolge

Du musst dann auch ein BOM schreiben.
http://de.wikipedia.org/wiki/Byte_Order_Mark
<< >> 9 Einträge, 1 Seite



View all threads created 2007-10-05 15:24.