Zeichenkette in einzelne Zeichen zerlegen

12/10/2009 - 16:42 von Gregor Goldbach | Report spam
Guten Tag liebe Gruppe,

ich habe ein Problem, das vermutlich mal wieder mit Encoding
zusammenhàngt. Ausgangslage ist mein Wunsch, eine Zeichenkette in
einzelne Zeichen zu zerlegen. Das mache ich wie folgt:

#!/usr/bin/perl

use strict;
use warnings;

my $string='!"§$%';

print "$_" for split(//, $string);
print '-' x 10,"";
print "$1" while $string =~ /(.)/g;

Putzigerweise wird das Paragraphenzeichen in zwei einzelne Zeichen
zerlegt. Dies ist die Ausgabe:

!
"


$
%
-
!
"


$
%

Die lustigen Zeichen da oben sind C2 und A7.

Gesehen habe ich dieses Verhalten unter 5.8.8. Mich beschleicht das
Gefühl, dass da irgendwo ein Encoding den Bach runter geht. Aber wo? Und
warum? :-)

Wenn ich in obigem Programm das Pragma utf8 verwende, dann wird das
Paragraphenzeichen nur noch als ein Zeichen ausgegeben, jedoch auch
falsch: A7. Im Programm selbst ist das Paragraphenzeichen als C2A7
codiert (sagt mir zumindest 'od', wenn ich den Quelltext damit ausgebe).

Wo zwischen diesen schlichten Zeilen liegt der Fehler? Und: Wie kommt
man denn nun an einzelne Zeichen einer Zeichenkette heran? Geht das mit
pack und 'U'?

Vielen Dank für die Erleuchtung,
Gregor

Dipl.-Inform. Gregor Goldbach (PKI Team)
Phone: +49 40 808077-621 Fax: +49 40 808077-556 Mail:goldbach@dfn-cert.de

DFN-CERT Services GmbH, https://www.dfn-cert.de, Phone +49 40 808077-555
Sitz / Register: Hamburg, AG Hamburg, HRB 88805, Ust-IdNr.: DE 232129737
Sachsenstraße 5, 20097 Hamburg/Germany, CEO: Dr. Klaus-Peter Kossakowski

DFN-PKI
https://www.pki.dfn.de/
 

Lesen sie die antworten

#1 Ralf Döblitz
12/10/2009 - 22:40 | Warnen spam
Gregor Goldbach schrieb:
Guten Tag liebe Gruppe,

ich habe ein Problem, das vermutlich mal wieder mit Encoding
zusammenhàngt. Ausgangslage ist mein Wunsch, eine Zeichenkette in
einzelne Zeichen zu zerlegen. Das mache ich wie folgt:

#!/usr/bin/perl

use strict;
use warnings;

my $string='!"§$%';


^
Das ist kein ASCII, also solltest du besser mittels "use encoding
'WHATEVER';" sagen, in welchem Encoding du den Quelletxt geschrieebn hast

[...]
Die lustigen Zeichen da oben sind C2 und A7.



Dann willst du für WHATEVER sicherlich utf8 einsetzen.

Ralf
Ralf Döblitz * Schapenstraße 6 * 38104 Braunschweig * Germany
Phone: +49-531-2361223 Fax: +49-531-2361224 mailto:
Homepage: http://www.escape.de/users/selene/
Mit UTF-8 kann man gleichzeitig àöüßÄÖÜæœłø‱¼½¾¤¹²³¢€£¥¶§¬÷×±©®™¡¿ verwenden…

Ähnliche fragen