WAA und Zeichensatz

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Grimm
Rookie
Rookie
Beiträge: 13
Registriert: Di, 11. Sep 2007 8:09
Wohnort: Eberswalde
Kontaktdaten:

WAA und Zeichensatz

Beitrag von Grimm »

Ich hatte das Problem, dass die Datenbankinhalte (Umlaute) im Web bei jedem Seitenaufruf unterschiedlich angezeigt wurden. Mal waren die Umlaute OK, mal fehlten sie völlig, mal wurde ein anderes Zeichen angezeigt (bei mehrmaligem Neuaufbau der Seite). Ich filtere seitdem die Umlaute heraus und setze das richtige HTML-Zeichen dafür ein. Nur beim EURO-Symbol klappt es nicht. Ich filtere auf chr(213) und setze dann "€" dafür ein. Das klappt manchmal. Meistens wird aber ein normales "i" angezeigt (chr(213) wurde nicht erkannt). Es gibt Unterschiede, auf welchem Rechner WAA läuft. Es müsste damit zu tun haben, wie der WAA die Datenbank ausliest.
Hat jemand eine Idee ?
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hallo,

ich habe meine ASCII-Tabelle mal durchsucht und bei Windowszeichensatz
ist bei Chr(213) ein "o" mit einer Schleife drüber. Es kann natürlich sein,
das bei Html-Format Chr(213) etwas anderes ist.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Rolf,

unter Xbase++ wird Chr(213) über entsprechende Einstellungen mit dem €-Zeichen belegt. Das hat in dem Fall nichts mit dem Windows-Zeichensatz zu tun.

Jan
Grimm
Rookie
Rookie
Beiträge: 13
Registriert: Di, 11. Sep 2007 8:09
Wohnort: Eberswalde
Kontaktdaten:

WAA und Euro-Zeichen

Beitrag von Grimm »

Hallo,
Danke für die schnelle Reaktion. Nochmals das Problem: Der Datenbank-String wird nach chr(213) durchsucht und bei Vorhandensein mit "€" ersetzt. Obwohl das Euro-Zeichen im String enthalten ist, wird es manchmal nicht erkannt. Im HTML-Text erscheint dann ein "i". Das merkwürdige ist, mal geht es, mal nicht !

Hans
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Moin Hans,
Ich denke mal, dass Dein String mal in ANSI und mal in OEM vorliegt...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Grimm
Rookie
Rookie
Beiträge: 13
Registriert: Di, 11. Sep 2007 8:09
Wohnort: Eberswalde
Kontaktdaten:

Beitrag von Grimm »

Moin Martin,
wie wäre das möglich. Ich öffne die Datenbank, lese den String, suche das EURO-Zeichen, ersetze es und erzeuge den HTML-Text und schließe die Datenbank. Beim nächsten Aufruf wird das Euro-Zeichen nicht mehr erkannt, und zwar in der gesamten Datenbank. Wie kann ich den Zeichensatz fest einstellen ?
Danke, Hans
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Hans,
dazu müsste man mal sehen, wie Du den Text aus der Datenbank holst, in einer Variablen ablegst, diese entsprechend umwandelst und das ganze ausgiebst.
Und vor allem: Wie werden die Informationen in der Datenbank gespeichert? Mit oder ohne Umwandlung (ConvToOEMCP bzw. ConvToAnsiCP)?
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Grimm
Rookie
Rookie
Beiträge: 13
Registriert: Di, 11. Sep 2007 8:09
Wohnort: Eberswalde
Kontaktdaten:

Beitrag von Grimm »

Hallo Martin,

die Daten werden ohne Umwandlung in einer Xbase-Anwendung gespeichert. Dort tritt diese Problem nicht auf.
************************************************
//Einlesen direkt aus der Datenbank
adata := wcharl({artgr, grbez, var2char(agrzu), var2char(agrfest),var2char(prf)}) //Variablen-Namen
*************************************************
function wcharl(achar) //achar Feld mit Ausdr
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Hans,
ich glaube, genau da liegt Dein Problem!
Du übergibst die Felder in einem Array direkt und in der Funktion änderst Du ein Zeichen in einem Arrayelement.
Array werden an Funktionen ja nur als Referenz übergeben - dadurch werden die Änderungen in der Funktion auch an der eigentlichen Stelle durchgeführt - in diesem Fall könntest Du Dir also das return achar am Ende sparen!
Versuche mal, das ganze noch weiter zu vereinfachen:

Code: Alles auswählen

adata := {}
aadd( adata, strtran( artgr, Chr(213), "€" ) )
aadd( adata, strtran( grbez, Chr(213), "€" ) )
aadd( adata, strtran( var2char(agrzu), Chr(213), "€" ) )
aadd( adata, strtran( var2char(agrfest), Chr(213), "€" ) )
aadd( adata, strtran( var2char(prf), Chr(213), "€" ) )
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hi

wird für WAA vielleicht ein spezieller Datenbanktreiber benötigt oder andere Einstellungen in der Dbesys.prg ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Grimm
Rookie
Rookie
Beiträge: 13
Registriert: Di, 11. Sep 2007 8:09
Wohnort: Eberswalde
Kontaktdaten:

Beitrag von Grimm »

Erstmal Dank an alle, ich probiere erstmal.
Hans
Grimm
Rookie
Rookie
Beiträge: 13
Registriert: Di, 11. Sep 2007 8:09
Wohnort: Eberswalde
Kontaktdaten:

Beitrag von Grimm »

Hallo, ich habe es !!

Grundeinstellung für jede Seite:
#include "Nls.ch"
SetLocale( NLS_ICURRENCYEURO, "1" )
SetLocale( NLS_SCURRENCY, Chr(213) )
SET CHARSET TO ansi

und falls mal ein " dabei ist :
cchar:=strtran( cchar,chr(34), " & #34;")

Im HTML-Text stehen dann die Umlaute unverändert drin, zB.
<td><font face=helv size=-2><b>Zubehör bis 2,-€ EK</b></td>

Hans
:D
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Hans,
das geht so zwar mit den Umlauten, aber nur auf Deutschen PCs - in ausländischen Umgebungen oder unter UNIX/Linux-Browsern (oder ähnlichem) wirst Du (bzw. der, der sich die Seite anschauen will) damit Probleme haben.

Vieel Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Grimm
Rookie
Rookie
Beiträge: 13
Registriert: Di, 11. Sep 2007 8:09
Wohnort: Eberswalde
Kontaktdaten:

Beitrag von Grimm »

Hallo Martin,
ich habe nur unser Warenwirtschaftsystem für unsere Kunden und Mitarbeiter im Internet geöffnet, um von zuhause und vom Kunden arbeiten zu können. Klappt prima. Für PC mit anderen Zeichensätzen müsste mal generell etwas ändern.

Hans
Antworten