Konvertierung von ISO-8859-1 nach UTF-8
Moderator: Moderatoren
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Konvertierung von ISO-8859-1 nach UTF-8
Moins,
ich habe ein kleines Problem:
Ich habe in meinen Web-Seiten (Kodierung: ISO-8859-1) Feldinhalte aus Formularen, die auch Sonderzeichen (Umlaute) anthalten können.
Diese soll ich an eine andere Webseite posten, die die Daten in der Kodierung UTF-8 erwartet - Feldinhalte mit Umlauten werden in diesem Fall ignoriert (ungültige Zeichen).
Wie kann ich die Daten so umwandeln, dass sie als UTF-8 rübergehen? Die Headerangaben habe ich beim Senden eigentlich auf UTF-8 (content-type: text/html; charset=UTF-8 ) gesetzt...
Viele Grüße,
Martin
ich habe ein kleines Problem:
Ich habe in meinen Web-Seiten (Kodierung: ISO-8859-1) Feldinhalte aus Formularen, die auch Sonderzeichen (Umlaute) anthalten können.
Diese soll ich an eine andere Webseite posten, die die Daten in der Kodierung UTF-8 erwartet - Feldinhalte mit Umlauten werden in diesem Fall ignoriert (ungültige Zeichen).
Wie kann ich die Daten so umwandeln, dass sie als UTF-8 rübergehen? Die Headerangaben habe ich beim Senden eigentlich auf UTF-8 (content-type: text/html; charset=UTF-8 ) gesetzt...
Viele Grüße,
Martin
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.
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Hallo Martin,
dies sollte es tun.
Viele Grüße,
Günter
dies sollte es tun.
Code: Alles auswählen
#include "dll.ch"
#DEFINE CP_UTF8 65001 // UTF-8-Codepage
#define CP_ACP 0 // aktuelle System-Codepage annehmen
FUNCTION AnsiToUTF8( cAnsiString )
LOCAL nSize, cBuffer, cUTF8
STATIC cMBtoW, cWToMB
IF cMBtoW = NIL
cMBtoW := DllPrepareCall( "kernel32.dll", DLL_STDCALL, "MultiByteToWideChar" )
cWToMB := DllPrepareCall( "kernel32.dll", DLL_STDCALL, "WideCharToMultiByte" )
ENDIF
cAnsiString += chr(0)
// Ansi in UTF-16 umwandeln
nSize := DllExecuteCall( cMBtoW, CP_ACP, 0, cAnsiString, -1, 0, 0 )
cBuffer := replicate( chr(0), 2*(nSize + 1) )
DllExecuteCall( cMBtoW, CP_ACP, 0, cAnsiString, -1, @cBuffer, nSize+1 )
// UTF-16 in UTF-8 umwandeln
nSize := DllExecuteCall( cWToMB, CP_UTF8, 0, cBuffer, -1, 0, 0, 0, 0 )
cUTF8 := replicate( chr(0), nSize + 1 )
DllExecuteCall( cWToMB, CP_UTF8, 0, cBuffer, -1, @cUTF8, nSize+1, 0, 0 )
RETURN left( cUTF8, nSize - 1 )
Günter
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Günter,
vielen Dank für Deine Lösung!
Leider funktioniert sie in meinem Fall nicht richtig - PayPal zeigt die Daten nicht korrekt an
Viele Grüße,
Martin
vielen Dank für Deine Lösung!
Leider funktioniert sie in meinem Fall nicht richtig - PayPal zeigt die Daten nicht korrekt an
Viele Grüße,
Martin
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.
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Hallo Martin.
funktioniert es denn mit dem String, den du zu konvertieren hast, lokal auf deinem System? Verwendet der zu konvertierende String eventuell eine andere Zeichenkodierung als die, welche auf der ausführenden Maschine als Standard eingerichtet ist?
(um UTF-8 zu betrachten, verwende ich lister.exe, Bestandteil von Total Commander)
Viele Grüße,
Günter
funktioniert es denn mit dem String, den du zu konvertieren hast, lokal auf deinem System? Verwendet der zu konvertierende String eventuell eine andere Zeichenkodierung als die, welche auf der ausführenden Maschine als Standard eingerichtet ist?
(um UTF-8 zu betrachten, verwende ich lister.exe, Bestandteil von Total Commander)
Viele Grüße,
Günter
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Günter,
kann ich Dir leider icht sagen.
Das kommte raus, wenn ich Dein Programm teste:
Merkwürdigerweise kommt das bei PayPal aber so auch in den SLEs an, wie Deine Funktion das umwandelt.
Gebe ich dagegen die Daten direkt (in ANSI) an PayPal, meckert PayPal und sagt, dass einzelne Felder ungültige Zeichen enthalten - diese Felder bleiben dann leer.
Schaue ich mir den Source der PayPal-Seite an, so ist überall von charset=UTF-8 die Rede...
Viele Grüße,
Martin
kann ich Dir leider icht sagen.
Das kommte raus, wenn ich Dein Programm teste:
Code: Alles auswählen
Mäöürtín // geht rein
MäöürtÃn // kommt raus
Gebe ich dagegen die Daten direkt (in ANSI) an PayPal, meckert PayPal und sagt, dass einzelne Felder ungültige Zeichen enthalten - diese Felder bleiben dann leer.
Schaue ich mir den Source der PayPal-Seite an, so ist überall von charset=UTF-8 die Rede...
Viele Grüße,
Martin
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.
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Günter,
ja - habe ich. Wollte einfach Sonderzeichen testen...
Ich habe auch nicht geglaubt, dass Deine Routine fehlerhaft ist, keine Sorge!
Nun denn, dann werde ich noch ein wenig stöbern, ob ich bei PayPal noch was finde...
Wenn nicht, müssen die Leute mit Sonderzeichen halt ihre Daten bei PayPal erneut eingeben - auch nicht soooo schlimm.
Viele Grüße,
Martin
ja - habe ich. Wollte einfach Sonderzeichen testen...
Ich habe auch nicht geglaubt, dass Deine Routine fehlerhaft ist, keine Sorge!
Nun denn, dann werde ich noch ein wenig stöbern, ob ich bei PayPal noch was finde...
Wenn nicht, müssen die Leute mit Sonderzeichen halt ihre Daten bei PayPal erneut eingeben - auch nicht soooo schlimm.
Viele Grüße,
Martin
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.
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Günter,
das hat leider auch nichts genützt - ich gebe es jetzt erstmal auf, ist nicht sooo wichtig...
Vielen Dank für Deine Unterstützung,
Martin
das hat leider auch nichts genützt - ich gebe es jetzt erstmal auf, ist nicht sooo wichtig...
Vielen Dank für Deine Unterstützung,
Martin
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.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Allo Armin,
zu umständlich! Ich müsste alle Eingaben in den betreffenden Feldern analysieren und durch die entsprechenden HTML-Tags ersetzen - und bei der Masse an Möglichkeiten würde das ein wenig dauern...
Und nicht jedes Sonderzeichen hat einen entsprechen HTML-Tag!!
Viele Grüße,
Martin
zu umständlich! Ich müsste alle Eingaben in den betreffenden Feldern analysieren und durch die entsprechenden HTML-Tags ersetzen - und bei der Masse an Möglichkeiten würde das ein wenig dauern...
Und nicht jedes Sonderzeichen hat einen entsprechen HTML-Tag!!
Viele Grüße,
Martin
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.