Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP + Post wandelt Hexwerte falsch um (https://www.delphipraxis.net/122866-php-post-wandelt-hexwerte-falsch-um.html)

hitzi 23. Okt 2008 11:35


PHP + Post wandelt Hexwerte falsch um
 
Hallo,

über ein Programm von mir schicke ich einen (Unicode)String zum Server. Dieser String wird vor dem Posten in das hexadezimale Format gebracht.

Beispielstring:
Zitat:

Жäöü
wird umgewandelt in
Zitat:

%416%E4%F6%FC
Wenn ich mir dann in PHP die Variable hole und testweise anzeigen lasse sieht sie wie folgt aus:
Zitat:

A6???
Die ordinalen Werte der "Fragezeichen" entsprechen den von "äöü" und ich kann zum Beispiel mit
Zitat:

$decodedStr .= "&#".ord($einzelnesZeichen).";";
später auch ordentlich darstellen.

Aber warum wird aus "Ж" (Ord=1046) "A6"???

Gruss

PS: Wenn ich spaßeshalber folgende Zeile teste:
Zitat:

echo "&# 1046;";
wird auch das "Ж" im Browser angezeigt.

HenKst 23. Okt 2008 11:37

Re: PHP + Post wandelt Hexwerte falsch um
 
Ich vermute mal weil 1046 einfach nicht in Ord reinpasst.

Ord kriegt nen 8bit wert und kann also nur zahlen bis 255 aufnehmen, alles was drüber ist wird abgeschnitten.

hitzi 23. Okt 2008 11:40

Re: PHP + Post wandelt Hexwerte falsch um
 
Oha ... richtig. Danke für den Denkanstoß.

[EDIT] Daran liegt es doch nicht. ich rufe die Seite wie folgt auf:
%E4%F6%FC werden korrekt in die Umlaute umgewandelt. Nur aus %416 (das Zeichen Ж) wird A6 ohne dass irgendein Ord() oder sonstewas an die variable durften. Jetzt weiß ich auch warum A6. Der Server hat die %416 wie folgt zerlegt:
%41 -> Hexadezimaler Wert für "A"
6 -> 6

ergibt eben die A6. Konnte ich schön beobachten, nach dem ich mal die %416 in %415 geändert hatte - ergibt dann in der PHP Datei "A5".

Muss ich beim posten noch irgendetwas angeben, damit eine korrekte Umwandlung erfolgt oder muss ich grundsätzlich einen anderen Weg gehen um aus einen Delphiprogramm Unicodezeichen an ein PHP Datei zu übergeben?

Volle 23. Okt 2008 12:20

Re: PHP + Post wandelt Hexwerte falsch um
 
ein ä wird auch nicht in %E4 umgewandelt sondern in %C3%A4 .
deshalb stimmt deine umwandlung von Ж in %416 noch nicht, das muesste %D0%96 sein -> weiter im alten thread :>


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 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