Probleme 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

|
re: 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.exeprint "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

|
re: 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

|
re: 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

|
re: 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

|
re: 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

|
re: 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

|
re: 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

|
re: 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

|
re: 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

|