Braucht man garnicht, das kann Perl auch so schon alles; intern ist es wiegesagt eh Unicode/UTF-8, wenn man beim lesen und beim schreiben aufpasst, was man da denn liest und was man gerne schreiben würde ist alles gut;
Das Beispiel von daviid mit encode_entities (ist nur nicht unbedingt das richtige zum XML-schreiben) zeigt ja das es schon 99% stimmt..
Makki
Ankündigung
Einklappen
Keine Ankündigung bisher.
Suche Hilfe für Plugin für Auerswald 5020
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Schau mal hier: Text::Unidecode - search.cpan.org
Kann kein äöü, setzt aber in eine Art 'closest match' um. Versuchen kostet ja nichts.
Einen Kommentar schreiben:
-
Eigentlich nicht.
Aber: Verwendest Du Windows?
Mehr wäre eigentlich nicht zu sagen, aber um ehrlich zu sein, weiß ich nicht, ob in Windows immer noch der 1252 Zeichensatz verwendet wird, oder ob man schon in der Neuzeit angekommen ist: Das Problem habe ich unter Linux schon seit Jahren nicht mehr - weshalb ich Dein Problem hier auch nicht nachbilden könnte. Wenn hier mal irgendwo 'komische' Zeichen im Browser auftauchen, stammen die ausnahmslos von unfähigen Webdesignern.
Kurz und gut: Was Kagge ist, ist die Software, die kein UTF kann. In einer globalisierten Welt, und zu dieser zählen sich die 'Global Player' vom Kaliber Microsoft doch ... ? ..., gibt es eben ein paar mehr Zeichen als nur die Lateinischen und deren Varianten. Chinesen, Japaner, Russen, Araber, alle wollen vertreten sein, was im Zeitalter des Internets ja wohl keine außergewöhnliche Anforderung ist - wohl aber in Redmond, dort beharrt man nicht nur in dieser Hinsicht auf eigenen 'Standards' (und Apple ist diesbezüglich auf dem gleichen - falschen - Dampfer).
Ich bin jetzt mal fies: Wenn man statt eines fenstermaskierten Interrupthandlers ein richtiges Betriebssystem verwendet, kann man solche Probleme per Umstellung auf UTF-8 in den Griff bekommen.
Wenn Du also bereits unter Linux unterwegs bist, ist das die Lösung.
Ich würde versuchen, die Verarbeitungskette bis zur finalen Ausgabe einheitlich in UTF-8 zu machen. Mit etwas Glück kannst Du invaliden Windows-Zwischenschrott ignorieren. Und wenn die 5020 Voip Dir UTF-8 liefert , dann hast Du schlicht keine andere Wahl: Entweder bis zum Ende durchschleifen, oder die Sonderzeichen kastrieren. Ich würde versuchen, UTF-8 durchzuziehen.
Das ist die Zukunft.
Einen Kommentar schreiben:
-
OK, wenn ich die eingelesenen Daten zuerst durch encode("uft8",...) jag läuft das script durch, allerdings kommt das Sonderzeichen Problem jetzt bei der Ausgabe ...
Jetzt hab ich in der xml anstatt äöü folgendes: "���"
Schick ich das durch encode_entities() , bekomm ich anstatt der drei ? folgendes: "äöü".
Dieser Sonderzeichen kack is einfach immer nen rießen besch*** Problem ...
Einen Kommentar schreiben:
-
Mangels Auerswald, nur ein bisschen Theorie:
1. Umlaute bzw. alles > ASCII 7Bit gehörte IMHO einfach verboten, ja, ich weiss die Meinung ist nicht mehrheitsfähig, würde aber viele Probleme lösen
2. WG-intern ist das Default-Charset ISO-8859-1 (primär wegen dem Webmin) Plugin (Perl)-intern aber UTF-8
Also muss man erstmal sehen, was die Kiste fürn encoding liefert.
encode/decode könnte hier helfen: schau mal in das Plugin von Bodo, da wird das vor&zurück gemacht.
Makki
Einen Kommentar schreiben:
-
Dann ruf einfach mal mit Firefox und aktiviertem Firebug (Konsole) die Gesprächsdatenliste auf, dann solltest du das schon sehen, die so 4-5 get bzw post Anfragen
Einen Kommentar schreiben:
-
Ich hab die "Version 4.0E - Build 000"
Ich hab ne 5020 VoIP, ich schätze du hast en andere Anlage?
Einen Kommentar schreiben:
-
Über diese URL, angepasst auf mein Netz, bekomme ich bei mir einen 403. Allerdings fahre ich auf der Anlage die Version 4.0E, vielleicht hast Du eine andere?
Bin jetzt sowieso mal bis zum WE weg, schreib am Freitag noch mal eine PN oder so, damit ich es nicht vergesse.
PS: Über den Browser geht das, ich hatte mit wget probiert. Kann aber erst wieder am WE.
Einen Kommentar schreiben:
-
Aktuell geht es nur um die Auswertung der Daten die die Anlage liefert, das noch wichtigere wird dann sein den Login per Plugin zu machen.
Adresse ist folgende: http://172.26.193.147/page_listgespr_state?offset=0Code:### Plugin Array zerlegen $plugin_info{$plugname.'_cycle'} = 3600; # alle x sekunden #my $baseurl = 'http://172.26.193.148/test/statics/'; #my $listgesprurl = 'auerweb_page_listgespr.php?offset=0'; my $baseurl = 'http://172.26.193.147/'; my $listgesprurl = 'page_listgespr_state?offset=0'; my $debug = 0; ### ENDE Definitionen #return; ### ab hier nichts verändern my $date; my $time; my $call_length; my $ex_number; my $ex_name; my $direction; my $success; use JSON::XS; use HTTP::Cookies; use XML::Writer; use IO; use LWP::Simple; use HTML::Entities; use utf8; #use strict; use warnings; #use File::Find; #use XML::RSS; #use HTML::TreeBuilder; #use Getopt::Long; # Abfrage my $url = $baseurl.$listgesprurl; my $listges_data = get($url); #$listges_data = $string_data; #decode_entities($listges_data); #encode_entities($listges_data); #return $url; #return $listges_data; if ($listges_data eq undef) { return 'HTTP failed.'; } #$object = JSON::XS->new->decode (decode "UTF-16BE", $jsontext); #Daten decoden $listges_data= encode ('utf8', $listges_data->{response}); my $json_data = decode_json($listges_data); # hash fuer die Daten #my $json_data = from_json($listges_data); # hash fuer die Daten my $data_xml= new IO::File(">/var/www/AW/output.xml"); my $data_rss= new IO::File(">/var/www/AW/rss.xml"); my $writer_xml = new XML::Writer (OUTPUT => $data_xml, NEWLINES => 0); $writer_xml->xmlDecl('UTF-8'); $writer_xml->startTag ("calls"); #$write_xml-> my $writer_rss = new XML::Writer (OUTPUT => $data_rss, DATA_MODE => 1, DATA_INDENT=>2); $writer_rss->xmlDecl('UTF-8'); $writer_rss->startTag("rss" ,"version"=>"2.0", "xml:base"=>"http://172.26.193.148/visu", "xmlns:dc"=>"http://purl.org/dc/elements/1.1/"); $writer_rss->startTag ("channel"); $writer_rss->dataElement( "title", "Anrufliste" ); foreach my $call (@{$json_data}) { $date = @{$call}[1]; $time = @{$call}[2]; $call_length = @{$call}[3]; $ex_number = @{$call}[5]; $ex_name = @{$call}[6]; $direction = @{$call}[14]; $success = @{$call}[15]; if ($ex_name eq "") { $ex_name = "Unbekannt"; } $writer_xml->emptyTag ("call",'date' => $date, 'time'=> $time,'length' => $call_length,'ex-number' => $ex_number,'ex-name' => $ex_name,'direction' => $direction,'success' => $success); #rss $writer_rss->startTag ("item"); if ($success eq "vergebl.") { $writer_rss->dataElement( "title", "Verpasster Anruf von $ex_name ($ex_number)" ); $writer_rss->dataElement( "description", "Verpasster Anruf von $ex_name ($ex_number) um $time am $date" ); } else { $writer_rss->dataElement( "title", "Anruf von $ex_name ($ex_number)" ); $writer_rss->dataElement( "description", "Anruf von $ex_name ($ex_number) um $time am $date" ); } #$writer_rss->emptyTag ("call",'date' => @{$call}[1], 'time'=> @{$call}[2],'length' => @{$call}[3],'ex-number' => @{$call}[5],'ex-name' => @{$call}[6],'direction' => @{$call}[14],'success' => @{$call}[15]); $writer_rss->endTag("item"); } $writer_xml->endTag ("calls"); $writer_rss->endTag ("channel");
Und über die Adresse: http://172.26.193.147/page_listgespr...100&filterCB=2 kann man die Filter festlegen die genommen werden sollen (heute, gestern, usw)
Wenn man sich das mit Firebug anschaut hat man das sofort raus.
Einen Kommentar schreiben:
-
Du bekommst von der 5020 doch offenkundig Daten?
Die würde ich nach Zeichen absuchen, die größer als 0x7F sind, und alle diese Zeichen löschen oder ersetzen, z.B. mit einem Fragezeichen.
Ob das funktioniert, weiß ich nicht, aber es ist einen Versuch wert.
Mit welcher URL greifst Du denn auf die Auerswald zu? Ich hab auch so ein Ding, und könnte mal einen Blick drauf werfen. Die Firmware-Version wäre auch noch interessant, ebenso Dein aktuelles Plugin.
Einen Kommentar schreiben:
-
Jetzt bitte nochmal bischen langsam :P
Ich hab da grad nur Bahnhof verstanden, ich weiß einfach nicht wonach ich suchen muss, sry.
Einen Kommentar schreiben:
-
Garbage in, Garbage out, daran ist erst mal nix zu ändern.
Ohne das Umfeld zu kennen: Die ganze Rohdatenwurst brutal auf nicht-ASCII-Zeichen (alles >= 0x7F) scannen und diese durch Leerzeichen oder Fragezeichen ersetzen. Danach die normale Verarbeitung versuchen.
Vor allem: Den Hersteller mal anbellen, die liefern ja offenkundig Schrottdaten.
Einen Kommentar schreiben:
-
Ich frag nochmal
Das Problem scheint zu sein dass Sonderzeichen, (ä,ü,ö, ...) in den abgefragten Daten vorkommen.
Hat da jemand ne Idee?
Einen Kommentar schreiben:
-
Das ist doch Pfusch wenn man so "einfach" an alle möglichen Daten rankommt, und dann auchnoch so schön sauber als JSON
Einen Kommentar schreiben:


Einen Kommentar schreiben: