Probleme mit Umlauten

  • Hallo,

    mal ein kleines Beispiel, ich lese ein Wort aus einem Text von einer Internetseite ein, z.b. Würzburg.
    Später soll das Wort in ein Textfeld eingetragen werden. Leider gibt es da dann ein Problem er schreibt dann W�rzburg statt Würzburg.
    Das passiert mit allen Umlauten.

    Kann man das irgendwie verhindern?

    Grüße

  • Einfachste möglichkeit:

    [autoit]

    Func __FFReadHTML($sMode ="body",$iFilter=0)
    $sString = _FFReadHTML($sMode,$iFilter)
    $sString = StringReplace($sString,"ä","ae")
    $sString = StringReplace($sString,"ü","ue")
    $sString = StringReplace($sString,"ö","oe")
    $sString = StringReplace($sString,"&","&")
    Return $sString
    EndFunc

    [/autoit]

    und dann statt _FFReadHTML, __FFReadHTML aufrufen.

  • danke für die Antwort.

    Bis jetzt lese ich meinen String immer so aus:

    Code
    $sName = _FFXpath("/html/body/center/table[1]/tbody/tr/td[1]/table[1]/tbody/tr[2]/td[2]", "textContent")

    Also müsste ich dann noch den String an deine Funktionen schicken?

    Müsste dann der komplette Code so aussehen? ( Funktion natürlich noch einbinden)

    Code
    $sName =  __FFReadHTML(_FFXpath("/html/body/center/table[1]/tbody/tr/td[1]/table[1]/tbody/tr[2]/td[2]", "textContent"))
  • [autoit]

    $sName = __FFXpath("/html/body/center/table[1]/tbody/tr/td[1]/table[1]/tbody/tr[2]/td[2]", "textContent")
    Func __FFXPath($eins,$zwei)
    $sString = _FFXPath($eins,$zwei)
    $sString = StringReplace($sString,"ä","ae")
    $sString = StringReplace($sString,"ü","ue")
    $sString = StringReplace($sString,"ö","oe")
    $sString = StringReplace($sString,"&","&")
    Return $sString
    EndFunc

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Das wird nicht funktionieren. Er will ja die Umlaute bekommen, diese werden aber nicht ganz korrekt ausgelesen. Die Rückgabe ist UTF-8 kodiert und muss daher in einen lesbaren String umgewandelt werden:

    [autoit]

    Func _UTF8Decode(Const $sString)
    ; Author: Prog@ndy
    If IsBinary($sString) Then Return BinaryToString($sString, 4)
    Return BinaryToString(StringToBinary($sString, 1), 4)
    EndFunc

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

    Func _UTF8Encode(Const $sString, $fBinary=False)
    ; Author: Prog@ndy
    If $fBinary Then Return StringToBinary($sString, 4)
    Return BinaryToString(StringToBinary($sString, 4), 1)
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von progandy (9. März 2010 um 18:42)

  • danke für die Antworten!

    @progandy: also wenn ich jetzt von einer Seite einen Text einlese benutze ich decode und kann dann mit dem string arbeiten.
    Wenn ich jetzt den String irgendwo in ein Feld einsetzen möchte, muss ich es dann wieder codieren oder kann ich es so lassen?

  • Das musst du ausprobieren, das wird wohl je ach Webseite unterschiedlich sein.

  • @progandy

    Zitat
    [autoit]

    If $fBinary Then Then Return StringToBinary($sString, 4)

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

    Da stimmt doch etwas nicht :D , da sind 2 Then hintereinander