Hauptmenü

Perl und Umlaute

Begonnen von spacy, 15 März 2014, 11:50:30

Vorheriges Thema - Nächstes Thema

spacy

Hallo da,

wollte mit dem Kalendermodul eine steuerung meiner Lampe vor der Garage realiesieren.
Habe dazu in myUtils eine sub eingetragen der auch funktioniert wenn ich keine Umlaute im Kalender benutze. Wenn doch dann halt nicht.
Habe jetzt versucht den string vorher zu verändern, leider klappt das so nicht. Kann mir da mal jemand einen Tip geben.

So sieht das aus

sub
Kalenderstart ($){
        my ($Ereignis) = @_;
        my @Ereignisarray = split(/.*:\s/,$Ereignis);
        my $Ereignisteil1 = $Ereignisarray[1];
        my @uids=split(/;/,$Ereignisteil1);
        foreach my $uid (@uids) {
                my $Kalendertext = fhem("get LeKaKl summary $uid");
                my %umlaute = ("ä" => "ae", "Ä" => "Ae", "ü" => "ue", "Ü" => "Ue", "ö" => "oe", "Ö" => "Oe", "ß" => "ss" );
                my $umlautkeys = join ("|", keys(%umlaute));
                $Kalendertext =~ s/($umlautkeys)/$umlaute{$1}/g;
                if ($Kalendertext =~ /Fruehschicht/) {
                        fhem("set Fruehschicht ja");
                };
                if ($Kalendertext =~ /Spaetschicht/) {
                        fhem("set Spaetschicht ja");
                };
                if ($Kalendertext =~ /Nachtschicht/) {
                        fhem("set Nachtschicht ja");
                };
        };
}
Danke euch

justme1968

was genau funktioniert denn nicht?

es gibt mindestens drei stellen bei denen das character encoding eine rolle spielt und alles zusammen passen muss.

im kalender bzw. dem import vom kalender. fhem intern und im frontend das du verwendest.

dazu kommt das encoding das du in deinem quelltext file verwendest und das dein editor hat.

alles muss richtig zusammenspielen.

siehst du denn im frontend bzw. den logfiles die dafen im richtigen encoding?

wenn du in deinem quelltext umlaute verwendest musst du perl sagen welches encoding dein file hat.

gruss
  andre

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

spacy

Also wenn ich vom FHEM webif ein update bzw ein get LeKaKl full all mache dann habe ich die Texte wie frühschicht zum beimspiel mit Umlauten.
Jetzt will ich in meiner sub in der myUtils prüfen ob ich halt Frühschicht habe damit morgens das licht vor der Garage an ist.
Wenn ich im Google Kalender Frühschicht mit ue schreibe funktioniert meine sub aber nicht wenn ich ein "Ü" verwende.
Dann stimmt der vergleich nicht mehr.
Jetzt wollt ich das in der sub vorher geprüft wird auf umlaute und wenn ja dann sollen diese in "oe ae ue" und so weiter umgesetzt werden.

justme1968

das einfachste ist die umlaute gar nicht erst mit auszuwerten. mach deinen vergleich auf Sp.*schicht und Fr.*schicht. dann sparst du dir die encoding probleme.

wenn du die umlaute verwenden willst kannst du versuchen ein 'use utf8' an den anfang deiner 99_myUtils.pm zu stellen und einen editor zu verwenden der das file als unicode behandelt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

spacy

Arbeite hier nur mit utf8 editoren.
use utf8 habe ich schon drin leider ohne Erfolg.

Frühschicht und Spät ist hier nur ein beispiel. Es sollen auch andere Daten ausgewährtet werden wo auch immer mal wieder ein umlaut zwischen sein kann.


Danke
spacy