Anzeigeproblem mit IE

  • Hallo,

    ich baue mir gerade ein kleine Suchmaske, mit der ich dann unseren Sharepoint Server anfrage.

    Den Wert einer Inputbox übergebe ich als $Suchbegriff:

    [autoit]

    _IENavigate($IE, "https://search.mysharepoint.com/Seiten/results.aspx?k=" & $Suchbegriff")

    [/autoit]

    Wenn ich den Begriff "Müller" suche, bekomme ich als Ergebnis folgendes dargestellt:

    M�ller

    [Blockierte Grafik: http://www.hasenmueller.de/files4forum/Bi…-2013-02-21.jpg]

    Wo muss ich denn was anpassen, das ich statt "M�ller" ein "Müller" sehe ?

    Nachtrag am 22.02.2013:
    Habe noch etwas weiter recherchiert. Das Problem tritt nicht nur unter Windows 8 mit dem IE auf, sondern auch unter Windows XP, allerdings wird hier kein � Zeichen, sondern ein Quadrat dargestellt.
    Ich habe dann mal die Intranet URL (Sharepoint) durch Google ersetzt, also so:

    https://www.google.de/search?q=müller

    Hier passt das Ergebnis!!!

    Ich gehe mal davon aus, dass das Problem nur in Verbindung mit dem Sharepoint Server besteht, aber wirklich weiterhelfen tut mir das nicht :(

    Gruß Hassan

    Einmal editiert, zuletzt von HassanMullah (22. Februar 2013 um 08:29) aus folgendem Grund: Weitere Erkenntnisse

    • Offizieller Beitrag

    Kann es sowas sein?

    Spoiler anzeigen
    [autoit]

    Func _URIEncode($sData)
    ; Author: Prog@ndy
    Local $aData = StringSplit(BinaryToString(StringToBinary($sData,4),1),"")
    Local $nChar
    $sData=""
    For $i = 1 To $aData[0]
    ConsoleWrite($aData[$i] & @CRLF)
    $nChar = Asc($aData[$i])
    Switch $nChar
    Case 45, 46, 48-57, 65 To 90, 95, 97 To 122, 126
    $sData &= $aData[$i]
    Case 32
    $sData &= "+"
    Case Else
    $sData &= "%" & Hex($nChar,2)
    EndSwitch
    Next
    Return $sData
    EndFunc

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

    Func _URIDecode($sData)
    ; 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
    Return BinaryToString(StringToBinary($aData[1],1),4)
    EndFunc

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

    MsgBox(0, '', _URIDecode(_URIEncode("testäöü fv")))

    [/autoit]
  • Frei ausm Bauch, glaube auch nicht, dass das auf Anhieb funktioniert:

    [autoit]

    $IE = _IECreate()
    ; ...
    $IE.document.charset = 'ISO-8859-1' ; Alternativ mal ISO-8859-15 probieren
    ; ...
    _IENavigate($IE, "https://search.mysharepoint.com/Seiten/results.aspx?k=" & $Suchbegriff")

    [/autoit]
  • Danke erst mal für die ersten Ansätze.

    Also mit

    [autoit]

    $IE.document.charset = 'ISO-8859-1' ; Alternativ mal ISO-8859-15 probieren

    [/autoit]


    ging gar nichts. Ich habe beide Versionen und auch UTF-8 versucht. Alles unverändert

    Wenn ich die beiden Funktionen von Xenobiologist einbaue, bekomme ich bei

    [autoit]

    MsgBox(0, '', _URIDecode(_URIEncode($Suchbegriff)))

    [/autoit]


    sauber ein "ü" dargestellt, aber beim Aufruf von

    [autoit]

    _IENavigate($IE, "https://search.fumgroup.com/Seiten/results.aspx?k=" & _URIDecode(_URIEncode($Suchbegriff)))

    [/autoit]


    immer noch das "?".

    Wie gesagt, ich vermute mal das hier ein Codierungproblem zwischen der _IENavigate Geschichte und dem Microsoft Sharepoint Server herrscht. Auf Google "gezeigt" wird mir ja ebenfalls ein "ü" angezeigt.

    Ich bin aber noch einen kleine Schritt weiter gekommen. Wenn ich via Windows Ausführen die URL mit der Übergabe von "Müller" ausführe, bekomme ich das gleiche Problem.
    Ich habe jetzt mal den Sharepointserver direkt aufgerufen und nach "Müller" gesucht. Dabei wurde die URL so umcodiert:

    m%C3%BCller

    Wenn ich jetzt via Autoit nach "m%C3%BCller" suche, bekomme ich "Müller" sauber dargestellt.

    So jetzt brauche ich 2 mal Eure Hilfe:

    1.) Wie ist die korrekte Bezeichnung dieser Umcodierungmethode ?
    2.) Kann mir hier jemand eine kleines Script zur Verfügung stellen, welches meinen Ursprünglichen String ausliest und nach "m%C3%BCller" Methode umconvertiert ?

    Danke für Eure Hilfe :thumbup:

  • Die Funktionen von Progandy sind schon die richtigen. Nur ist das Beispiel etwas unglücklich, setzt es doch das Ausführen der Brain.exe voraus. Teste einmal dieses Beispiel:

    [autoit]

    $sURI ="Müller"
    $sEncodedURI=_URIEncode($sURI)
    MsgBox(0, 'Encode', $sEncodedURI)
    $sDecodedURI=_URIDecode($sEncodedURI)
    MsgBox(0, 'Decode', $sDecodedURI)

    [/autoit]

    Danach verstehst du, dass du es als Browsereingabe so verwenden musst:

    [autoit]

    _IENavigate($IE, "https://search.fumgroup.com/Seiten/results.aspx?k=" & _URIEncode($Suchbegriff))

    [/autoit]

    umgedreht wenn du eine codierte URI in Klarschrift haben willst aber so:

    [autoit]

    $sURI = _URIDecode(_IEPropertyGet($oIE, "locationurl"))

    [/autoit]

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (22. Februar 2013 um 20:35)