send Funktion - Unicode senden
-
Angenommen ich habe ein Unicode String in dem unter anderem kyrillische Zeichen vorhanden sind. Ich muss den String per GET request an eine PHP Datei senden, nur wie? send gibt es nicht im Unicode Format und akzeptiert nur "const char *buf", soviel ich weiß sendet send auch nur BYTES...
Wie kann ich jetzt ohne Probleme mein "std::wstring" senden ohne erst zu konvertieren? Weil durch das Konvertieren ergibt sich aus den kyrillische Zeichen nur *Müll*. Ich hoffe ich habe mich klar genug ausgedrückt... Bin schon etwas länger damit beschäftigt und finde einfach keinen Ansatz.
-
Äh, hab zwar keine wirkliche Ahnung
Aber... sende es einfach als Bytearray, wenn der Server es richtig interpretiert, sollte es doch passen?!
(denn GET hat ja keinen content-type, glaube ich)
-
Wenn Du es an PHP senden sollst, dann solltest Du es vorher nach UTF-8 umwandeln; siehe WideCharToMultiByte
-
Bei GET kannst du laut Standard sowieso nur ASCII mitschicken. UTF-8 zu verwenden wird wohl mit vielen Client/Server Kombinationen funktionieren, ist aber eigentlich nicht erlaubt.
Du könntest den Unicode-String aber Hex-koideren, und im PHP Code wieder zurückwandeln.
Dann kannst du dir aussuchen welche Darstellung (UTF-8, UTF-16, ...) des Unicode-Strings du nach Hex wandelst.ps:
Und ja, send() arbeitet immer mit Bytes. Welche Bedeutung diese Bytes haben ist send() egal. Die Bedeutung definiert der Standard, in deinem Fall HTTP, und ein GET Request ist da eben auf ASCII Zeichen beschränkt.
-
hustbaer schrieb:
Du könntest den Unicode-String aber Hex-koideren, und im PHP Code wieder zurückwandeln.
Warum nicht Base64 oder so?
-
TyRoXx schrieb:
hustbaer schrieb:
Du könntest den Unicode-String aber Hex-koideren, und im PHP Code wieder zurückwandeln.
Warum nicht Base64 oder so?
Danke erstmal für die Hilfe an alle.
An Base64 habe ich noch garnicht gedacht und scheint mir noch am einfachsten von allen.Danke für den Tipp, sollte es noch andere Lösungswege geben dann nur zu.
-
TyRoXx schrieb:
hustbaer schrieb:
Du könntest den Unicode-String aber Hex-koideren, und im PHP Code wieder zurückwandeln.
Warum nicht Base64 oder so?
Wenn man ne Base64 Implementierung in C++ hat, dann auch gern Base64.
Zum selber schreiben wäre ich einfach zu faul, da würd' ich eher Hex nehmen. Weil's wurscht ist