[C#]ASCIIEncoding und Umlaute

Interrogans

Grünschnabel
(Prä: Bin mir nicht ganz sicher, ob das hier passt, aber es erschien mir hier am sinvollsten; bitte verschiebt es, wenn es fehl am Platz ist und schreibt mir eine PM)

Ich habe in C# ein HTTP-POST-Request mit natürlich POST-Daten, die in sonem Byte-Stream übertragen werden. Mein Problem, wenn ich nun in meinem String "Command" Umlaute haben, kommen die nicht beim Server an => Das ASCIIEncoding verträgt sich damit nich.

Kennt jemand eine gute Alternative? Aus der MSDN bei Microsoft bin ich nicht wirklich schlau geworden und die Suche nach "ASCIIEncoding Umlaute" oder so ähnlich bei :google: liefert auch nicht wirklich akzeptable Ergebnisse, oder ich bin was diese Encoding-Sachen betrifft einfach noch etwas zu unbefleckt :rolleyes: -

(Nein, das is C#: )
PHP:
// string Command ist initialisiert.
            // [...]

            ASCIIEncoding encoding = new ASCIIEncoding();

            byte[] buffer = encoding.GetBytes(Command);
            
            // Prepare web request...
            HttpWebRequest myRequest =
                  (HttpWebRequest)WebRequest.Create("http://" + this.str_server + "/" + this.str_interface);

             // POST-Daten sind die Befehle an den Server
            myRequest.Method = "POST";

            // Set the content type to a FORM 
            myRequest.ContentType = "application/x-www-form-urlencoded";

            // Get length of content
            myRequest.ContentLength = buffer.Length;

            // Get request stream
            Stream newStream = myRequest.GetRequestStream();

            // Send the data.
            newStream.Write(buffer, 0, buffer.Length);

            // Close stream
            newStream.Close();

            //[...]

Hoffe auf Eure Hilfe!

Grüße
 
Zuletzt bearbeitet:
Hi

Wenn du nicht auf ASCII angewiesen bist, nutz doch ein anderes Encoding, welches Umlaute unterstützt. Default oder UTF8 (Unicode) lassen auf jeden Fall Umlaute und Sonderzeichen zu, die nicht im ASCII-Zeichensatz stehen.
 
Ja mit UTF-Encodings hab ichs ja schon probiert. Hat aus irgendeinem Grund auch nicht funktioniert.

Aber - diese Zeile funktioniert anscheindend. Der User test mit einem Umlautpasswort kann sich einloggen! (musste etwas suchen im WWW, bis ich das mit dem Default raus hatte, man kann nämlich nicht etwa eine "DefaultEncoding" erstellen)
PHP:
byte[] buffer = System.Text.Encoding.Default.GetBytes(Command);
Super! Danke.

Mir is zwar noch aufgefallen, dass die Antwort auch ASCIICodiert falsch kommt, aber ich hab folgende Zeile
PHP:
// Get stream object
StreamReader streamRead = new StreamReader(streamResponse);
einfach in folgende
PHP:
StreamReader streamRead = new StreamReader(streamResponse, System.Text.Encoding.Default);
ändern müssen und es gieng (4. Überladung, man kann als 2. Parameter die Enkodierung angeben).

Danke. Das hat mir wirklich geholfen; hab in .NET eben noch nie mit sowas gearbeitet / auch die Http-Request-Klassen und mach das grad mitm Internet.
Du hattest das entscheidende Stichwort, danke.

Grüße
 

Neue Beiträge

Zurück