Ich möchte in einem Reading die Umlaute ersetzen.
Hierzu habe ich
data-get="Subject" data-substitution="toString().replace('ä','ä').replace('ö','ö').replace('ü','ü').replace('ß','ss')"
eingebaut.
Funktioniert prima, solange nur ein Umlaut vorkommt. Bei mehreren kommt die Ersetzung jedoch total durcheinander.
Habe auch ('/ä/g','ä') probiert, um mehrere gleiche Umlaute zu ersetzen. Haut aber auch nicht hin.
Was mache ich falsch?
Danke und Gruß
Im PHP kann man da "preg_match_all" nehmen um einen String komplett zu bearbeiten. Vielleicht gibts da was ähnliches auf Pythonebene.
Hab mal gesucht aber das scheint es hier nicht zu geben.
Er findet ja auch alles, nur wird völlig undefiniert ersetzt.
Im Notfall ein userReading erstellen und mit Perl substituieren.
Gruß
Dan
Hm, klingt interessant.
Aber so tief bin ich in der Materie leider nicht drin.
Das geht relativ leicht.
Allerdings wirst Du um eine kleine Funktion in der 99_myUtils.pm kaum herum kommen.
z.B.:
99_myUtils.pm
sub umlautsToHtml($)
{
my ($text) = @_;
$text =~ s/ä/\ä\;/gm;
$text =~ s/ü/\ü\;/gm;
$text =~ s/ö/\ö\;/gm;
$text =~ s/ß/\ß\;/gm;
return $text;
}
Weitere Substituierungen sind leicht hinzuzufügen.
Und dann das userReading:
ReadingsNameHTML:ReadingNameOriginal {umlautsToHtml(ReadingsVal($NAME,"ReadingNameOriginal",""))}
ReadingsNameHTML und ReadingNameOriginal sind natürlich auf die eigenen Werte anzupassen.
Ungetestet, aber ich denke es sollte klappen.
Bin mir nicht ganz sicher ob & und ; escaped werden müssen, aber schaden wird es sicher nicht.
Gruß
Dan
P.S. Gibt es so eine Funktion nicht sogar irgendwo FHEM-intern?
Also erstmal vielen Dank das ihr euch so um einen Halbwissenden bemüht :)
Werde heute abend mal versuchen das einzubauen.
In FHEM / Tablet UI hab ich ja das
data-get="Subject" data-substitution="toString().replace('ä','ä').replace('ö','ö').replace('ü','ü').replace('ß','ss')"
probiert.
Leider passt das Eegebnis nicht.
Jetzt muss ich doch nochmal fragen:
Wie baue ich das in meine eMail-Abfrage ein:
define Mail mailcheck imap.1und1.com xxx.yyy@online.de {myPassword()} INBOX
define eMail1 readingsGroup Mail:From
define eMail2 readingsGroup Mail:Subject
Gegenfrage: Warum willst du das tun? Hast du beim Browser die falsche Textcodierung eingestellt, das die Umlaute nicht richtig angezeigt werden? Oder anderwo in deiner Verarbeitungskette ...
Mehrfaches Replace funktioniert aber grundsätzlich. Probiere es mit anderen Buchstaben.
data-substitution="toString().replace('ä','ä').replace('ö','ö').replace('ü','ü').replace('ß','ss')"
Was macht das? Aus einem ä wird ein ä und aus einem ö wird ein ö usw. Es sieht als nicht anders aus. Darum denkst du vielleicht, dass es nicht funktioniert.
andere Schreibweise:
data-substitution="toString().replace('ä','\u00e4').replace('ö','\u00f6').replace('ü','\u00fc').replace('ß','ss')"
Die Umlaute werden ja im Prinzip richtig dargestellt.
Die falsche Anzeige ergibt sich nur in der Betreffzeile von Mails, welche über Outlook geschickt werden.
Sende ich eine Mail z.B. vom iPad, wird alles richtig angezeigt.
Und kommt im Betreff nur 1 Umlaut vor (gleich welcher) funktioniert die Ersetzung.
Nur wenn mehrere unterschiedliche Umlaute im Text sind, wird zwar alles ersetzt, aber nicht mit den richtigen Umlauten.
Also aus ü wird z.B. ä, u.s.w.
Hab auch mal die andere Schreibweise probiert, aber gleicher Effekt.
das eigentliche problem ist das outlook im subject latin1 verwenden. das ist eigentlich nicht erlaubt und wird im mailcheck modul nicht berücksichtigt.
schau mal ob es hilft wenn du in 32_mailcheck.pm zwischen zeile 399 und 400 ein$subject = latin1ToUtf8($subject);
einbaust.
falls das geht: kannst du mir mal so eine komplette outlook mail zeigen. vielleicht gibt es im header etwas um dies automatisch zu erkennen.
gruss
andre
Hat leider auch nicht geklappt.
Hier mal eine Test-Mail mit Betreff "Test äöüß äöüß"
Return-Path: <absender@online.de>
Received: from mout.kundenserver.de ([212.227.126.187]) by
mx.emig.kundenserver.de (mxeue102 [217.72.192.66]) with ESMTPS (Nemesis) id
0MFRXI-1c9GKY3t1o-00EPYm for <empfänger@online.de>; Fri, 14 Oct 2016
11:14:46 +0200
Received: from s800 ([80.139.104.110]) by mrelayeu.kundenserver.de (mreue005)
with ESMTPSA (Nemesis) id 0LtBoV-1cxVCX2jDX-012nKI for
<empfänger@online.de>; Fri, 14 Oct 2016 11:14:46 +0200
Message-ID: <235AF492305349FA94972DC9B225C187@s800>
From: "absender" <absender@online.de>
To: <empfänger@online.de>
Subject: =?iso-8859-1?B?VGVzdCDk9vzfIOT2/N8=?=
Date: Fri, 14 Oct 2016 11:14:44 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_003B_01D2260C.2A6B64F0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
X-Provags-ID: V03:K0:bu/b4yRmq7gxjrTEXFhSaZTy4DqOE/GB0n5AcVSdATcmecvb7Dw
MU2hLwLRfMd8GDqn0ylMtu8TPCnn7DcDXxdxJcMV+MgD4EmDGmYq+xPX9h8fXBRZMoSWHWC
1qEPh9Gver+vsqOq67CwSQBqrCVZcaEtCqDST1DeAFKi18Iv+mr6Z0UZsMB86mEokVp7cSI
llYmESo7GbB7cIRHhBSxQ==
X-UI-Out-Filterresults: notjunk:1;V01:K0:2eJ6jAEf9TM=:893OcYJDiNjhIMBvfEiMM1
3+J3HNHPrYLD10kU3inK1sic8KtCseuKyxiRh86wkM8mOWdFcPBJbKC8hsufDqf37zQTObfKi
OnSoW1SF8vYIXovNM/kj5G6nVvgpzdVERVUZOmRIxXnTOgOHKI8onDK3712+kd5bS3clP2DMx
hFgg6rina6jxpxK0h6Uh0/jCnKXAZhdp1IdJDCKNE/KVxtr70++uQFV/KYdyO4Gn+xc4ygHzM
j/RjFhM7ImV/lpb0XbNCNmDE2kNjuLIIQfCwSHJQRpgbETfz1rQi9d1F1DEWWD6vWg759nVHC
XU9N3ATLfeDltd2MJ2xhl9JEzcQCCi7xYF36v+sPEiOWxSEqLFM9SX613lLK1DBqLctnVC+yM
ymrJSdTY3UYjb5TVZu6TlDmhVmTZlEbpuyf3pmuXHfB7At96s8/D75zsesZrSkAQGabLShOTr
ia0PlirmbcXMB3o/BXnRNIJXKlnI4up8OcFcsr5++kQPjGHPEv6//OpfQxfpq2USV59jpDNKe
eHKOecA6qCght8ENbjFKXfao8OjfDwXRuUbRY7UpQS6/1T1Ugab/E3PmiYlh8Wodoc4Sr2hWd
W8Uo0iIzkKXkRFNXggKAfgfGDHjWgUioQojxKG+q2Vj9JwsRbtn4UxTBraqdNkXeRbO5iuRoh
3o/jG+4V73K6u/CpU3v6pFs/YA/iO1OuGBitdg1Nrq0b+/O7dsuIq3tMuRpSY7JaATC3ZP0tt
5cUdRVQkdU2pCgKtxVva86MbhBBO1OZmsU/MmuHhfPnrbRlWf1T8PjM8zMQYtRXfHcig4Ur8d
X0bYSNS
Envelope-To: <empfänger@online.de>
X-UI-Filterresults: notjunk:1;V01:K0:JO9BYP/1/MA=:2hD95OF6ctyeZdqQ1wT0ObhE6M
oIouzyhhlO+WGn49T0aTu10DoJPfZBIThQlx989FHSdzYyLBop4cwbnxyEsj57+L7PZCNk1JX
Qv89MiKbrGJYgMvf/b+Iq07aom2C05Q+uQeR0vzEE+LOmhYnkTvwBTN3eiaL3l5UTPjzL1gaa
qwl8ZnHeVuPLypQxSXyosjzxQjU71Xd/tqpa/sVbv0b+uixmpDTj3e7amOhT/JWscBvFxuSxH
Lw51KQ8OGmZiXux6LID6ysrX7aXOnR2Eo+AZKBwoBn2D11bO5qu2AIJLwT/qvoD3LUVpZScAV
KmSQQEH3joxQ+ykfonLcng4lKZWJe0LLGP5WUhEpyTIwBTy6eOOoG7uAGJbs0HtfcTjropHVE
wHbbOEaEkRGPbgGAIVN/tPvJkfSVi+aw/QhbTctGrR8JqA7ajEyAdH+pThKarYGo9kzCo5dSv
wqjAok+TSy2xb4IiVN9EBha6qqstonII8nBDLOqnx94Wf/Z39JYmRzAUbEohvefOQs1khvtah
dc8XSD9+dMWGB6FVklGOrIgiA/zfSuNNlWu5CbiUw+6lfiw/zTQ1rDEFFnw3CAWygQSR93RU5
odCkjhenJdeMWao/Jhfw+0Qv8himKfux4V1fbLz5JH7D42w2RPJKvcz4W5vKjhU8uWB6h1dUO
90WWRdBi5wSJgAUuQBb5gjjohzn4uIrR/hcnE6mfOCbbOs1tTe8F+YLqu31WXUz88houJdbV2
rubx3jMEaHHvLKxr5KEwVWYxNUh41d0Hqua7O08YIrj3t05967n98Jy1mKKyh0ZvURlk3LDXo
fJxWO7CWO0fR7RVDJL2BpfxtGaqgham8oHRJl4RjhQVQAEXh7o8vPbcnRSTp36omO5XjywaH9
hwGUASV6MqyBJT5t0X8r8JbF66oEoYePFKMX2APoeTUEVvP3Jii+bw6fZ48ty6J0o5qHHIBF1
giLq/2AXac7lTQJA0H91XbrfO24DueSopGtIuXJHO2jqtVvnn4/7hkcDmRPMDBS6Xj5LxxfPP
376LXxTgzgdsuqGivLY3Kn9YDNabPK5EOcT2PIv3TKdKhCsCRmEJKnrizZlb7FsJzOrwnD9CV
CbeDhf1M9yxqpnpu4B4OWF1787G2kiIGv1AWBeQn3GPhj2AQgweNpTVKBSd5avssgE+tS1v09
wk9nJWyI5i/0/lDqCnyukv5jaiuqrc//L+4bIdVOWxlFmt+HRIFpLSQsEuFHT5Os1oRhoEf3G
uLsGjCNe5y+g525jt4H/vCn6JeGo6xFSsSfM7mTi8VRhQ3qcAjL+IKwWRizGBd28KidHF2L15
1Fwuaa3kDZr7YkjogFG5GgbvYttgp7NFFsPhCw47FzhhPuI=
der fall ist noch etwas anders als ich gedacht hatte.
probier mal bitte die angehängte version.
gruss
andre
edit 2016-10-14: ist eingecheckt.
Super !!
Funktioniert !
Danke :)
Es werden alle Umlaute (auch mehrfach) richtig dargestellt.
ich hab diese version eingecheckt. mal sehen ob es seitendefekte gibt...
gruss
andre