AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi URLEncode und Unicode?
Thema durchsuchen
Ansicht
Themen-Optionen

URLEncode und Unicode?

Ein Thema von hitzi · begonnen am 22. Okt 2008 · letzter Beitrag vom 23. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#1

URLEncode und Unicode?

  Alt 22. Okt 2008, 07:43
Hallo,

wie kann ich einen Unicodestring (Delphi 2009) so kodieren, dass er bei einer PHP Datei korrekt ankommt. Ich hab schon TIdURI.ParamsEncode() probiert, aber ein kurzer Test mit "öäü" stellt später auf der Webseite folgenden Text da: "oau".

Ist mein Ansatz richtig und der Fehler liegt an der Webseite und deren Verarbeitung oder muss ich in Delphi etwas anderes probieren?
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: URLEncode und Unicode?

  Alt 22. Okt 2008, 07:48
Was kommt den aus ParamsEncode raus? Ich würde es Hex-Codieren.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Volle

Registriert seit: 25. Nov 2003
Ort: Stuttgart
100 Beiträge
 
Delphi 7 Personal
 
#3

Re: URLEncode und Unicode?

  Alt 22. Okt 2008, 08:07
hab mich vor kurzem mit genau der selben problematik beschaeftigt. allerdings in C++ mitm BDS 2006.

es gibt hier die Funktion UTF8Encode(). Ich weis aber net in wie weit es diese auch in Delphi gibt.
Schau mal ob du da was findest, wenn ja hilfts dir weiter.
cYa n' sTay [ S ! C ]
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#4

Re: URLEncode und Unicode?

  Alt 22. Okt 2008, 09:25
Hallo Hitzi,

mir ist noch nicht so ganz klar, was du nun genau willst: Willst du einen string in ein Format für URLs codieren, wie du es in der Überschrift geschrieben hast (da hatte ich auch schon mal erfolglos was für in den Bordmitteln gesucht), oder soll eine php-Datei im UTF8-Format erstellt werden oder wie oder watt?

Es gibt jedenfalls auch in Delphi 2009 die Funktion UTF8Encode. Diese macht aus einem string (in D2009 also aus Unicode) einen UTF8-codierten String. Etwas fies (letztlich aber logisch) ist am Anfang nur der Ergebnistyp der Funktion, welcher ein "RawByteString" ist - wenn ich das richtig verstanden habe, ist das ein Stringtyp, der Delphi sagt, dass es nicht versuchen soll, diesen an verschiedene Zeichensätze oder so anzupassen, was ja auch richtig ist. Kann nur etwas lästig bei der Weiterarbeit sein...

Falls du einfach nur eine php-Datei im UTF8-Format schreiben willst, macht dir am einfachsten eine TStringList, in die du Zeile für Zeile alles reinschreibst und am Ende kannst du einmal
meineStringList.SaveToFile(filename,TEncoding.UTF8); aufrufen.

Vielleicht hilfts ja, vielleicht war es aber auch völlig am Thema vorbei. Kommt drauf an, was du genau machen willst.

Bis denn
Bommel
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#5

Re: URLEncode und Unicode?

  Alt 23. Okt 2008, 11:25
Danke für die Antworten. Ich hab es über die Hexcodierung erledigt. Funktioniert mit unseren Umlauten ganz gut, aber sobald der ordinale Wert eines Zeichens im hexadezimalen Zahlenformat größer FF wird spinnt mein Server.
Ich hab es jetzt immer mit dem Zeichen "Ж" probiert. Dieses Zeichen besitzt den ordinalen Wert von 416 (Dezimal=1046). Der Server wandelt die geposteten variablen schon automatisch in das dezimale Format um. Funktioniert ganz gut solange der Zahlenwert die größer FF ist. Bei meinem Beispiel liefert der Server statt dem dezimalen Wert 1046 einfach A6 zurück.

Da das Problem nun eher in Richtung Webserver/PHP geht, werde ich das mal lieber in der anderen Sparte posten. Ist ja eh ne neue Frage.

[Edit]: Hier ist die Frage dazu: http://www.delphipraxis.net/internal...=955956#955956
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Volle

Registriert seit: 25. Nov 2003
Ort: Stuttgart
100 Beiträge
 
Delphi 7 Personal
 
#6

Re: URLEncode und Unicode?

  Alt 23. Okt 2008, 12:24
Wie im anderen thread schon gesagt stimmt deine umwandlung noch nicht.

du wandelst einfach den HEX wert des ä's in ein %HEX um. das klappt so nicht.
Versuche mal mit der Funktion UTFbEncode() ein ä umzuwandeln.
dort wirst du 2 zeichen rausbekommen. und deren Hex wert musst du dann mit%HEX zusammenbauen.

ä -> ä
-> %C3%A4

und wenn du das an deinen webserver schickst dann wirds klappen.

du musst aber aufpassen!
es sind nicht immer 2 zeichen, es kann auch mal nur 1 zeichen (leerzeichen -> %20) oder mehrere zeichen sein (bis zu 4 da unicode 4 byte lang ist)

viel glueck
cYa n' sTay [ S ! C ]
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#7

Re: URLEncode und Unicode?

  Alt 23. Okt 2008, 12:30
Hmmm ... meinste wirklich ... die "öäü" werden doch aber korrekt auf dem Server dargestellt, wenn ich die übermittelte Variable in PHP mit utf8_encode($test) ausgebe. Nur eben das andere Zeichen wird vom Server falsch ans PHP übergeben -> siehe mein Edit im anderen Thread.
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Volle

Registriert seit: 25. Nov 2003
Ort: Stuttgart
100 Beiträge
 
Delphi 7 Personal
 
#8

Re: URLEncode und Unicode?

  Alt 23. Okt 2008, 12:34
ich kann nur so viel sagen dass ich mich damit vor kurzem beschaeftigt hatte und es mit einem normalen "in hex wandeln" nicht ging.

wenn dus so machst wie ich es gemacht hatte klappt es ...
also entweder versuchst du es oder du ignorierst diesen fehler und suchst einen anderen woanders.
aber es gibt afaik nichts was dir aus %416 wieder ein zeichen macht.

geh einfach mal auf

www.google.de/ä.txt
aber mit dem internet explorer.

dann bekommste die meldung dass
www.google.de/%C3%A4.txt
nicht gefunden werden konnte.

mit dem firefox sieht es anders aus, der verwendet einen andernen, neueren, standart, welchen ich grad versuch zu implementieren ..
cYa n' sTay [ S ! C ]
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#9

Re: URLEncode und Unicode?

  Alt 23. Okt 2008, 12:48
Danke

Ich hab die Codierung jetzt so geändert, wie du es vorgeschlagen hast und siehe da, ich muss auf der PHP Seite noch nicht einmal was konvertieren. Da hatte ich es mir ja mal wieder viel komplizierter gemacht.
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Volle

Registriert seit: 25. Nov 2003
Ort: Stuttgart
100 Beiträge
 
Delphi 7 Personal
 
#10

Re: URLEncode und Unicode?

  Alt 23. Okt 2008, 12:55
bitte bitte

wenn du dich um die sog. Punycode implementierung kuemmern willst dann kannst du hier nachlesen wie das geht:

http://tools.ietf.org/html/rfc3492

is aber auf jeden fall komplizierter wie das normale umbennen und ist eignetlich auch nur notwendig um was gegen phishing zu tun, was bei dir im programm ja wahrscheinlich unnoetig sein wird.
cYa n' sTay [ S ! C ]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz