Thread Zeichensatzproblem mit Š (15 answers)
Opened by bianca at 2019-06-07 19:07

haj
 2019-06-09 15:22
#190116 #190116
User since
2015-01-07
527 Artikel
BenutzerIn

user image
2019-06-09T05:56:21 bianca
Mir ist bewusst, dass man sich heutzutage lauter Krücken einfängt, wenn man nicht UTF-8 verwendet. Aber man lernt auch ein bisschen.

Na ja, das Problem entsteht ja eigentlich dadurch, dass man mehr als 255 verschiedene Zeichen braucht, um durch die internationale Welt zu kommen. Du hast Dir das Leben selbst schwer gemacht, indem Du drei verschiedene 1-Byte-Zeichenkodierungen in einem Programm einsetzt: Perl versteht Latin-1, Notepad++ speichert Deinen Code in Windows-CP1252, und selbst hast Du noch Latin-9 hinzugefügt. Ich denke, Latin-9 war Weg in die falsche Richtung.

Hier mal ein Beispiel, wie man die verschieden Codesets verwenden kann, wenn die Datei in "ANSI" (Windows CP1252) abgespeichert ist:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use 5.010;
use Encode;

sub decode_ansi { decode('cp1252',$_[0]) }

my @namen = (
    decode('ISO-8859-15',"Zala Kralj & Ga\250per \246antl"), # besser vermeiden
    decode_ansi("Zala Kralj & Gašper Šantl"), # so sieht's doch besser aus!
    decode_ansi("Björk Guðmundsdóttir"),
);

my $filter = decode_ansi(
    q/[^0-9a-z @\.,_#+±%()\[\]\$\-~¿!'&§°¨ßäöüÅÄÁÀÃÂÖÜÚÉÈÑþœçáàåãâëéèêòóúùîïí©øØô½ñšŠý®¬µ¯ð]/
);


for my $name (@namen) {
    my @liste;
    for (my $p = 0; $p < length($name); $p ++) {
        if (substr($name,$p,1) =~ /$filter/i) {
            push @liste,$p+1;
        }
    }
    say Dumper(\@liste);
}

Hier werden alle Literale, auch der Satz von Zeichen für den Filter, sobald als möglich mit dem passenden Encoding decodiert. Der Vorteil ist, dass Du nicht um drei Ecken erraten musst, welchen BROKEN BAR Du für ein Š brauchst, sondern die Zeichen so in den Filter einsetzen kannst, wie Du sie im Editor siehst. Als Demo habe ich mal den ð hinzugefügt, den Du brauchst, wenn Du Björk mit vollem Namen in Deine Sammlung aufnehmen willst.

Solltest Du später mal Musik von 郎朗 sammeln, dann kannst Du immer noch auf UTF-8 umsatteln.

View full thread Zeichensatzproblem mit Š