[LUGA] Mit freundlicher Unterstützung von:
init.at

Mail Thread Index


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [luga] Perl UTF8 und LDIF (lang und eigentlich OT)



Am 28.2.2007 schrieb "Peter J. Holzer" <hjp-luga@hjp.at>:

hab' ich mir doch gedacht, dass Du da anbeißen wirst ;-)

>> >    if (  $field =~ /[^a-z,A-Z\d\s\/\.,-_]/) {
>> >      my $out = encode("utf8",$field);
>
>Hier wandelst Du explizit von der "internal string representation" nach
>utf8 um.
>[...]
>
>> [begin "iso2utf8_base64.pl"]
>> #!/usr/bin/perl -w
>> use strict;
>> use encoding 'utf8';
>> use MIME::Base64;
>> use Encode 'decode';
>> binmode(STDOUT, ":utf8");
>> while (<>) {
>>   $_=decode("iso-8859-1", $_);
>
>Hier tust Du das aber nicht. Du wandelst den Input von iso-8859-1 in die
>"internal string representation" um, und die 

.. und dass die _nicht_ utf8 ist braucht mich ja nicht zu interessieren
:-P Diese Tatsache würde es aber erleichtern ...

[...]

>Wenn Du utf-8 willst, musst Du explizit encode aufrufen, so wie Du es
>oben gemacht hast.
>
>while (<>) {
>    $_=decode("iso-8859-1", $_);
>    $_=encode("utf-8", $_);
>    print MIME::Base64::encode($_);
>}

Ok. Das ergibt jetzt natürlich einen gewissen Sinn im obengenannten
Zusammenhang. Ich bin fälschlich davon ausgegangen, dass Perl sich
selbst um Unicode kümmert, habe aber übersehen, dass Unicode != UTF-8
und gehofft "use encoding 'utf8';" würde helfen. Da lese ich noch
Doku nach ;-)

>Das decode kannst Du dabei einem IO-Filter überlassen:
>
>binmode STDIN, ":encoding(iso-8859-1)";

naja, im Zielscript lese ich eine Datei, das geht aber eh auch im open()
Aufruf ...

Danke für Deine Tips ! Das klingt vielversprechend, ausprobieren kann
ich's leider erst am Abend ...

  Goesta

--
#!/usr/bin/perl
foreach $c (split(/ /,"47 6f 65 73 74 61 20 53 6d 65 6b 61 6c 0d 0a")) {
print pack("C", hex($c));}



powered by LINUX the choice of a gnu generation
linux user group austria;
Suche
Suche
Letzte Änderung:
webmaster@luga.at
September 2010