Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi 7 WebModule Zeichensatz Problem (https://www.delphipraxis.net/169753-delphi-7-webmodule-zeichensatz-problem.html)

mczero 9. Aug 2012 13:52

Delphi 7 WebModule Zeichensatz Problem
 
Halli hallo,

unsere Webapplikation nutzt ein ISAPI-Modul, das aus Delphi 7 Webbroker-Code besteht.
Da das ganze doch schon recht staub ansetzt, wollte ich nun einfach mal ein wenig AJAX mit JQuery hier und
da in die Applikation einbringen. Es sollen Daten eines Input-Felds im Hintergrund an den Server gesendet werden.
Vorher jedoch befülle ich das Input-Feld in einem OnHTMLTag-Ereignis mit vorhandenen Daten (vereinfachter Code):

Delphi-Quellcode:
if TagString = 'InputEdit1' then
  ReplaceText := '<input type="text" name="InputEdit1" id="InputEdit1" value="'+ String1 +'">';
Das Problem hier:
Wenn in String1 etwa ein paar Sonderzeichen sind, wie etwa bei "TestöÖäÄüÜ!"§$%&/()=ß",
so werden davon einige abgeschnitten, und auf der HTML-Seite bleibt nur noch ein Input-Feld mit dem
Value "TestöÖäÄüÜ!" übrig.

Ich dachte, das Delphi entsprechend dem Antwort-Header auch den Zeichensatz korrekt anpasst? Anscheinend nicht...
Wie bekomme ich das in den Griff? Was ist das Problem hier? Vielen Dank für alle Antworten 8-)

s.h.a.r.k 9. Aug 2012 13:56

AW: Delphi 7 WebModule Zeichensatz Problem
 
Kann es vielleicht an dem einen Anführungszeichen TestöÖäÄüÜ!"§$%&/()=ß liegen? Weil einfach so Abschneiden wäre alles andere als üblich, selbst bei Zeichensatzproblemen. Aber schlag mich nicht, wenn ich falsch liege... :stupid:

[add]
Bin mir eigentlich sogar sehr sicher, dass es sogar daran liegt...

[add]
Schau mal hier. Ersetze mal das " durch &quot; und schaue dann obs klappt. Allgemein solltest du diese speziellen Zeichen eh entsprechend umwandeln.

mczero 9. Aug 2012 14:14

AW: Delphi 7 WebModule Zeichensatz Problem
 
Tatsache, Du hast recht! Natürlich, man sollte den HTML-Zeichensatz verwenden.

Frage 1:
Hat Delphi Funktionen zum umwandeln von ANSI -> HTML-Zeichensatz? Ich habe nichts dazu gefunden...

Und Frage 2:

Was jetzt noch merkwürdig ist: wenn den Value, der nun korrekt ist, wieder per AJAX an eine Delphi WebModule-Action
schicke, muss ich den String diesmal per utf8toansi() umwandeln. Warum muss ich das auf einmal umwandeln? Wenn ich
sonst herkömmlich eine HTML-Form abgesendet habe und auf der Delphi Seite mit

Delphi-Quellcode:
String1 := Request.ContentFields.Values['InputEdit'];


ausgelesen habe, war der String auch ANSI, ohne das ich UTF8ToANSI() benutzen musste. Reine Verständnisfrage...

Ich sende folgendermaßen:
Code:
$.ajax({
  url: "/scripts/ISAPI.dll/Actionname",
  type: "POST",
  data : { parameter : "Strings mit Umlauten, Sonderzeichen etc."}
});

s.h.a.r.k 9. Aug 2012 14:57

AW: Delphi 7 WebModule Zeichensatz Problem
 
zu Frage 1: Kein Plan. Schreibe dir halt selbst schnell einen String-Replacer...

zu Frage 2: Wenn deine Website als UTF-8 ausgeliefert wird, dann wirst du vom Browser immer UTF-8 kodierten Text erhalten. Würde mich wundern, wenn es sonst anders wäre.

mczero 9. Aug 2012 15:04

AW: Delphi 7 WebModule Zeichensatz Problem
 
Frage 1 habe ich selbst beantworten können, HTMLEncode() tut den Zweck :lol:

Zu Frage 2: Ja, Requests sind ja prinzipell immer UTF8, egal, bei AJAX Requests wandle ich nun auf Delphi Seite einfach um.

Danke!! Brett vorm Kopf gehabt :P

s.h.a.r.k 9. Aug 2012 15:06

AW: Delphi 7 WebModule Zeichensatz Problem
 
Zitat:

Zitat von mczero (Beitrag 1177521)
Zu Frage 2: Ja, Requests sind ja prinzipell immer UTF8, egal, bei AJAX Requests wandle ich nun auf Delphi Seite einfach um.

Naja, immer glaube ich nicht. Würde behaupten, dass es mit dem Zeichensatz zusammenhängt, mit dem die Website ausgeliefert wird. Eine andere Basis hat der Browser ja sonst nicht und genau damit arbeitet er dann.

mczero 9. Aug 2012 15:14

AW: Delphi 7 WebModule Zeichensatz Problem
 
Okay,

in irgendwelchen JQuery-Foren hatte ich das mal aufgeschnappt und so interpretiert, das UTF8 meist Standard ist...
gilt wahrscheinlich für XMLHTTPRequests. Egal, ich kann das ja in Delphi mit Request.ContentEncoding vorher abfragen...

Thom 9. Aug 2012 16:15

AW: Delphi 7 WebModule Zeichensatz Problem
 
Du kannst Dir die manuelle Codierung sparen - das macht Delphi automatisch. Entscheident ist dabei, vor der Zuweisung des Inhaltes die Eigenschaft ContentType auf UTF-8 zu setzen:
Delphi-Quellcode:
  Response.ContentType:='text/html; charset=UTF-8';
  Response.Content:=PageProducer.Content;
Damit werden auch deutsche Umlaute, Leerzeichen und Anführungsstriche korrekt übertragen.
Beispiel:
Delphi-Quellcode:
procedure TWebModule1.WebModule1TestAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.ContentType:='text/html; charset=UTF-8';
  Response.Content:='" & ß ä ö ü Ä Ö Ü &#8364; á à Ù Ú';
end;

mczero 9. Aug 2012 16:45

AW: Delphi 7 WebModule Zeichensatz Problem
 
Leider gibt es damit Probleme...

Die HTML-Seite für den PageProducer hat einen META-Tag:

Code:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Wenn ich nun den Response ContentType auf UTF8 ändere, ist der ganze Text auf der Seite kaputt,
und wenn ich den ContentType ebenfalls auf "text/html; charset=iso-8859-1" setze, werden wieder alle möglichen
Sonderzeichen rausgeschmissen (im Value des Input-Tags).

p80286 9. Aug 2012 17:03

AW: Delphi 7 WebModule Zeichensatz Problem
 
Versuch es doch mal mit
Delphi-Quellcode:
Zz:='&#'+ord(Z)+';'
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz