Probleme mit Encoding eines Internettexts

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von HalliHallo.

    Probleme mit Encoding eines Internettexts

    Hallo,

    habe ein Problem mit dem Encoding von
    Zeichen. Bin am verzweifeln.

    Ich soll XML-Daten zu einer Web-API
    hochladen. Diese Daten müssen ISO-8859-1 kodiert sein.

    Ich habe jetzt schon alles versucht.
    Bekomme immer den Fehler: „Variableninhalt nicht gueltig fuer
    Sorte“ wenn „Sorte“ Umlaute enthält. Seltsamerweise wird das
    „scharfe ß“ nicht bemängelt. Es wird akzeptiert, aber auf der
    Website nicht angezeigt. Lade ich z.b. weiß hoch, dann steht auf der
    Website nachher „Wei“

    Das hier ist der Code mit dem ich die XML Datei aus einer Textbox hochlade:

    VB.NET-Quellcode

    1. Dim URL As String = _host & "DatenHochLaden.php"
    2. Dim response As HttpWebResponse
    3. Dim UplText As String = TextBoxXML.Text 'Die XML Daten
    4. Dim request As HttpWebRequest = CType(HttpWebRequest.Create(URL), HttpWebRequest)
    5. request.Credentials = New NetworkCredential(_username, _password)
    6. request.PreAuthenticate = True
    7. request.ContentLength = UplText.Length
    8. request.Method = "POST"
    9. request.KeepAlive = True
    10. request.ContentType = "application/xml; charset=ISO-8859-1"
    11. Dim requestStream As Stream = request.GetRequestStream()
    12. Dim postBytes As Byte() = Encoding.Default.GetBytes(UplText)
    13. requestStream.Write(postBytes, 0, postBytes.Length)
    14. requestStream.Close()
    15. response = CType(request.GetResponse(), HttpWebResponse)



    Eigentlich sollte
    doch, nach allem was ich gelesen habe, request.ContentType
    = "application/xml; charset=ISO-8859-1" reichen um die
    Daten zu codieren. Warum funktioniert das nicht?
    Komme einfach nicht weiter. ;(
    Bedanke mich jetzt schon mal für jede Hilfe.
    Viele Grüße
    Gregor

    *Topic verschoben*

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Mein System-Encoding ist UTF 8, wenn ich so einen String erstelle und dann die Bytes hole, habe ich die Bytes vom UTF-8-String. Diese Bytes kann man mit Encoding.Convert anpassen.

    C#-Quellcode

    1. string x = "ABäöü";
    2. byte[] def = Encoding.Default.GetBytes(x);
    3. byte[] iso = Encoding.Convert(Encoding.Default, Encoding.GetEncoding("ISO-8859-1"), def);

    Zitat von mir 2023:
    Was interessiert mich Rechtschreibung? Der Compiler wird meckern wenn nötig :D