Perl Expressions und UTF-8

Stringoperationen funktionieren mit utf-8-kodierten Zeichenketten

Perl Expressions arbeiten auch mit UTF-8-kodierten Zeichenketten. Sofern diese denn auch UTF-8-kodiert sind. Also nimm da nicht die Bytes sondern utf-8-kodierte Zeichenketten. Zwischen diesen beiden Dingen vermittelt Encode::encode(); Wir schauen uns ein Beispiel an:

use Encode qw(encode decode);

# Oktetten, Bytes
my $octs = 'Fünf';
my $comp = 'Ü';

# nothing
print $octs =~ /$comp/i;

Die print()-Ausgabe ist leer, weil Perlintern verschiedene Oktetten vorliegen. Nun jedoch nehmen wir die Rohdaten von eben und deklarieren die UTF-8-Kodierung. Jetzt funktioniert auch der Vergleich Case-insensitive:

my $chars = decode('UTF-8', $octs);
my $cc = decode('UTF-8', $comp);

# nunmehr matcht das 
print $chars =~ /$cc/i;

Die zu vergleichenden Strings müssen also alle beide UTF-8-kodiert vorliegen.


Datenschutzerklärung: Diese Seite dient rein persönlichen Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. nmq​rstx-18­@yahoo.de