![]() |
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:
Das Problem hier:
if TagString = 'InputEdit1' then
ReplaceText := '<input type="text" name="InputEdit1" id="InputEdit1" value="'+ String1 +'">'; 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-) |
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 ![]() |
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."} }); |
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. |
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 |
AW: Delphi 7 WebModule Zeichensatz Problem
Zitat:
|
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... |
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:
Damit werden auch deutsche Umlaute, Leerzeichen und Anführungsstriche korrekt übertragen.
Response.ContentType:='text/html; charset=UTF-8';
Response.Content:=PageProducer.Content; 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:='" & ß ä ö ü Ä Ö Ü € á à Ù Ú'; end; |
AW: Delphi 7 WebModule Zeichensatz Problem
Leider gibt es damit Probleme...
Die HTML-Seite für den PageProducer hat einen META-Tag:
Code:
Wenn ich nun den Response ContentType auf UTF8 ändere, ist der ganze Text auf der Seite kaputt,
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
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). |
AW: Delphi 7 WebModule Zeichensatz Problem
Versuch es doch mal mit
Delphi-Quellcode:
Gruß
Zz:='&#'+ord(Z)+';'
K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr. |
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