perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 17
Click for quality!




12.02.2012 / 03:33

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl/CGI: Scripts des Perl-Archiv zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragProbleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Hallo

Ich versuche grad mit einem Interface zu kommunizieren das Daten über http zur Verfügung stellt. Mittel HTML-Get oder auch des LWP User Agents kann ich die Daten zwar abrufen, allerdings ist es mir auch nicht mit den 2 im Forum vokommenden Beispielen geglückt die Sonderzeichen in anderer Form als einem *?* empfangen zu können.

Hat jemand ein Beispiel für mich oder besser noch einen Hack für HTML-Get der es mir ermöglicht Sonderzeichen im Klartext zu empfangen ?

Vielen Dank im Vorraus !

Sonixx

Datum: 12.06.2007-22:25

Beitragre: Probleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Mal davon abgesehen dass in strikten HTML keine Sonderzeichen vorkommen duerfen, ist es wahrscheinlich ein Darstellungsfehler.
Ein Beispiel unter Win32 (statt text/html jedoch text/plain):
Das Script

#!C:/Perl/bin/perl.exe

print "Content-Type: text/plain; charset=ISO-8859-4\n\n";

print "ü\n";


Die Ausgabe in der Eingabeaufforderung ist ein 'hoch 3'-Zeichen

C:\Dokumente und Einstellungen\dash>perl -MLWP::Simple -le "print get 'http://lo
calhost/cgi-bin/temp60.pl'"
³

jedoch umgeleitet in eine Textdatei

C:\Dokumente und Einstellungen\dash>perl -MLWP::Simple -le "print get 'http://lo
calhost/cgi-bin/temp60.pl'" > get_output.txt

und mit dem Notepad geoeffnet zeigt ein 'ü'.

Jag die empfangenen Daten einmal durch HTML::Entities' 'encode_entities' damit daraus echtes HTML wird


use HTML::Entities qw();

HTML::Entities::encode_entities($content);


Datum: 13.06.2007-16:46

Beitragre: Probleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Ersteinmal ein dickes Danke.

Leider brachten deine Lösungen nicht den gewünschten Erfolg. Aber ich muss das Problem noch vertiefen.

Es ist eigentlich nicht Sinn der Sache die Daten als HTML auszugeben. Das Interface sendet einen HTML Header, die Daten jedoch befinden sich in einem Zustand von Text, Zahlken und anderen Parametern die durch *Oder* Zeichen getrennt sind. Das Script soll später als Cron auf einem Server laufen und per Webaufruf oder Cron laufen.
Ich darf allerdings nicht davon ausgehen Parameter an Perl übergeben zu können.
Da ich mich mit HTML::Entities::encode_entities auskenne habe ich 2 verschiedene Varianten getestet.

########################### 1##################

#!/usr/bin/perl

use HTML::Entities qw();

require "new.cgi";

my $buf = &HTTPGet("/lose/interface/output3_paidmail.php", "www.hplose.de", 80, "verguetung=1&ma=500&reload&uebrig=0");

$buf = HTML::Entities::encode_entities($buf);

print $buf;

exit (0);

########################### 2##################

#!/usr/bin/perl

use HTML::Entities qw();

require "new.cgi";

my $buf = &HTTPGet("/lose/interface/output3_paidmail.php", "www.hplose.de", 80, "verguetung=1&ma=500&reload&uebrig=0");

HTML::Entities::encode_entities($buf);

print $buf;

exit (0);

##############################################

Die zusätzlichen Parameter sind abgewndelt da ich nicht offen meine User ID posten möchte.
Ich habe mir die Daten auf der Eingabeaufforderung angesehen und die Ausgabe in ein File umgeleitet : test.cgi > output.txt

Leider wurde ich die Fragezeichen nicht los.
Hast du vieleicht noch eine andere Idee ?

MFG Sonixx

Datum: 13.06.2007-18:03

Beitragre: Probleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Ich habe mal einen HTTP-GET-Request auf die Seite losgelassen, die Daten werden vom Server bereits im falschen Charset gesendet, ist also kein Darstellungsfehler.

Fuege deiner Apache-Konfigurationsdatei (httpd.conf) folgende Zeile hinzu


AddDefaultCharset ISO-8859-1

sollte noch keine vorhanden sein, damit verwendet der Apache bei der Auslieferung von Seiten standardmaeszig ISO-8859-1.

Wenn du die Daten aus einer Datenbank beziehst muss fuer die Tabelle auch das korrekte Charset eingestellt sein.

Und, wie du selbst ja schon gesagt hast, es wird ein Content-Type von 'text/html' gesendet obwohl die Daten 'text/plain' sind, im PHP-Script sollte daher der korrekte Content-Type gesetzt werden.


<?
header('Content-Type: text/plain; charset=ISO-8859-1');
?>

HTH

Datum: 13.06.2007-20:14

Beitragre: Probleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Man bist du fleissig !

Wollen wir nicht über ICQ chatten ? Das geht schneller ;)

Leider habe ich auf den Server keinerlei Zuriff. HP-Lose ist ein kommerzieller Service. Ich möchte nur einen Paidmailer schreiben der diesen unterstützt.

Mit PHP kann ich leider nicht dienen. Das Script habe ich in Perl geschrieben.

Allerdings müssen die gesendeten Daten korrekt sein, da PHP Mailer damit umgehen können.
In meinem Browser wird bei einer Direktabfrage allerdings auch alles mit ? präpariert, doch ich hatte gehofft das der Browser das falsche Charset benutzt ....

Puh, was mache ich nun ?!?

MFG Sonixx

Datum: 13.06.2007-20:23

Beitragre: Probleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Okay du hattest Recht und ich hab geschlafen .... :(

Auch HP-Lose Paidmails über den PHP Mailer kommen schon verstümmelt an. Ich werde mich mal mit dem Seitenbetreiber in Verbindung setzen.

Erst einmal vielen Dank für deine Hilfe.
Bei der guten Unterstützung werde ich mich hier gerne mal öfter umsehen aud auch mal was zum besten geben.

MFG Sonixx

Datum: 13.06.2007-20:27

Beitragre: Probleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Keine Ursache, wuensch dir viel Erfolg.

Helfende Unterstuetzung ist hier gerne gesehen, gibt Tage an denen Fragen hier nur so reinprasseln und ich bin ja nun auch nicht immer da ;)

Datum: 13.06.2007-20:53

Beitragre: Probleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Jau Dash immer wieder gern :)

Als kleine Genugtung deiner Arbeit poste ich hier noch einmal die Antwort die ich vom Support erhalten habe. Die Aussage erinnert mich doch etwas an Klickers Denkweise :D

############### Mail #######################

Hallo und Guten Tag ...

.... der beschriebene Effekt ist kein "Fehler", sondern ein "Feature" ;)

Im Ernst ... es handelt sich hierbei um eine Ausgabe aus der Datenbank,
die als UTF8 gesendet wird, und nicht wie bei uns in Eropa üblich in
LATIIN1 ..
Auf Grund unserer Programmierung, und der zu erwartendenen Standards
von UTF8 ist dieser "Fehler" momentan noch vorhanden, wird aber in der
nächsten Zeit durch konvertierung der Daten eleminiert werden.

#################### Ende ####################

Schmunzelnde Grüsse

Sonixx

Datum: 13.06.2007-22:25

Beitragre: Probleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Schoen wenn sie als UTF-8 gesendet werden, wenn die Datensaetze in der Datenbank aber nicht als UTF-8 vorliegen oder auf dem Weg bis zur Ausgabe nicht konvertiert werden, bringt einen dieser Fortschritt herzlich wenig, bis auf die falsche Ausgabe.

Man sollte wissen dass das Setzen von AddDefaultCharset nicht fuer die gesamte Apache-Konfiguration gelten muss, es koennen gezielt per VirtualHost-, Directory-Direktiven oder '.htaccess'-Dateien bestimmte Bereiche auf ein anderes DefaultCharset gesetzt werden.

perl -ple 's/Feature/Bug/g; END{ print "*lol*" }'

Nur gut dass dich das nichts kostet - hoffe ich doch ;)

Datum: 14.06.2007-00:12

Beitragre: Probleme bei Sonderzeichen mit HTML-Get
Seitenanfang
Hab mir eben die HpLose-Seite angesehen, dort genau das umgekehrte Problem, der HTTP-Response-Header sagt das Charset ist ISO-8859-1, der Body enthaelt aber UTF-8. *g*

Datum: 14.06.2007-00:37

-






-
-