Umlaut-Problem

  • Hallo, ich habe da ein kleines Problem mit einem String.
    Dieser wird zunächst aus einer Datei gelesen und dann in etwa urldekodiert.

    Das Problem ist: Umlaute werden in der GUI dann falsch dargestellt: "ä" wird zu "ä"
    Ich habe versucht, den String durch die String-Binary-Funktionen zu behandeln, aber ohne Erfolg.

    Was kann ich da tun? Danke!

  • Ich mache das immer so.

    Edit: Das ist nur ein Bsp ^^

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    $Input = InputBox("I1", "Einfach ein Text.", "Über, Äpfel äpfel, Ö wie ö", " ", "350", "200", "-1", "-1")
    Select
    Case @error = 0 ;OK - The string returned is valid
    $Output = StringRegExpReplace($Input, "[üÜ]", "ue")
    $Output2 = StringRegExpReplace($Output, "[äÄ]", "ae")
    $Output3 = StringRegExpReplace($Output2, "[öÖ]", "oe")

    [/autoit] [autoit][/autoit] [autoit]

    Msgbox(0,"","" & $Output3)
    Case @error = 1 ;The Cancel button was pushed
    Exit
    Case @error = 3 ;The InputBox failed to open
    Exit
    EndSelect

    [/autoit]
  • Die kodierungs-Sache ist ziemlich unwichtig, das ist nur der weg wie ich zu dem String komme. Aber dennoch, das sieht dann zB so aus: "%3E"

    Jeden einzelnen Buchstaben zu ersetzen, wäre nicht so schön. Gibt es da keine Funktion, die das übernimmt? Es liegt irgendwo an der Zeichenkodierung (unicode / utf8)

  • Dein String ist UTF-8 kodiert, also mussst du ihn auch so dekodieren.

    [autoit]

    Func _URIDecode($sData, $fUTF8=True)
    ; Author: Prog@ndy
    Local $aData = StringSplit(StringReplace($sData,"+"," ",0,1),"%")
    $sData = ""
    For $i = 2 To $aData[0]
    $aData[1] &= Chr(Dec(StringLeft($aData[$i],2))) & StringTrimLeft($aData[$i],2)
    Next
    If $fUTF8 Then Return BinaryToString(StringToBinary($aData[1],1),4)
    Return $aData[1]
    EndFunc

    [/autoit]