Mein AutoIt erhält Daten aus einer Datenbank,
die mit urlencode() bearbeitet wurden,
zum anzeigen würde ich das natürlich gerne rückgängig machen, geht das und wenn ja wie?
urlencode() rückgängig machen
-
- [ offen ]
-
prestige -
5. September 2008 um 15:38 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Zur Not mit mehrfachem StringReplace :).
peethebee
-
Hab davon zwar keine Ahnung, aber es gibt auch urldecode()
-
urldecode ist in php, ich wollt aber kein php mit einbauen, falls ich stringreplace nutzen musst, gibts es irgendwo ne Seite die erklärt wie urlencode() welches durch welches Zeichen ersetzt
-
Sieht nicht so wild aus, was da zu ersetzen ist
Google:
-
gibts iwo ne Liste mit dem woraus was wird?
-
ah bin fündig gewordenhttp://www.asphelper.de/Tip/Tip12.asp</a>
-
Ist zwar nicht Autoit, aber man kann sich das schon irgendwie umdenken
http://www.motobit.com/tips/detpg_URLDecode/
Zuerst StringReplace '+' durch ' '
Danach nach '%' suchen und Chr() der nachfolgenden 2 Zeichen machen.
-
Zitat
Ooops, ist ja encode sry
Ist zwar nicht von mir aber egal:
[autoit]; ===================================================================
[/autoit]
; _HTTPEncodeString($string)
;
; Encodes a string so it can safely be transmitted via HTTP
; Parameters:
; $string - IN - The string to encode
; Returns:
; A valid encoded string that can be used as GET or POST variables.
; ===================================================================
Func _HTTPEncodeString($string)
Local Const $aURIValidChars[256] = _
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _
0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, _
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, _
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, _
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Local $sEncoded = ""
For $i = 1 To StringLen($string)
Local $c = StringMid($string, $i, 1)
If $c = " " Then $c = "+"
If Number($aURIValidChars[Asc($c) ]) Then
$sEncoded &= $c
Else
$sEncoded &= StringFormat("%%%02X", Asc($c))
EndIf
Next
Return $sEncoded
EndFunc ;==>_WebComposeURL -
URLEncode <> HTTPEncode
-
Ok habs hinbekommen:
[autoit]func urldecode ( $string )
[/autoit][autoit][/autoit][autoit]
$string = StringReplace ( $string, "+", " ")for $i = 1 to StringLen ( $string )
[/autoit][autoit][/autoit][autoit]$cur = StringMid ( $string, $i, 1 )
[/autoit][autoit][/autoit][autoit]
if $cur = "%" and $i +2 <= StringLen ( $string ) Thenif StringRegExp ( stringmid ( $string, $i+1, 2 ) , "([0-9A-F]{2})") Then
[/autoit][autoit][/autoit][autoit]$temp = StringLeft ( $string, $i-1 )
[/autoit][autoit][/autoit][autoit]
$temp &= chr ( dec ( stringmid ( $string, $i + 1, 2 ) ) )
$temp &= stringmid ( $string, $i + 3 )
$string = $tempEndIf
[/autoit][autoit][/autoit][autoit]EndIf
[/autoit][autoit][/autoit][autoit]Next
[/autoit][autoit][/autoit][autoit]Return $string
[/autoit][autoit][/autoit][autoit]EndFunc
[/autoit]
Ps: Mit _HTTPEncodeString ist trotzdem urlencode gemeint
Veruschs mal mit Bäume. -
Oder kürzer
[autoit]$Temp = StringReplace($Encoded,"+"," ")
[/autoit]
While 1
$pos = StringInStr($Temp,"%",1,1)
If $pos = 0 Or @error = 1 Then ExitLoop
$Decoded = StringReplace($Temp, StringMid($Temp,$pos,3),Chr(Dec(StringMid($Temp,$pos+1,2))))
$Temp = $Decoded
WEnd -
Schon mal probiert was passiert wenn du den String '%%%' schickst?
Ausserdem er ist Anfänger und wird das wohl kaum verstehen. -
Redn wir hier von UrlEncodeden Strings oder von Wirrwarr?
EDIT: Da hast du recht, sicher ist sicher
Diese Funktion _HTTPEncodeString, funktioniert einwandfrei, aber ich durchblicke sie nicht ganz -
Wirrwarr xD
Rechne immer mit dem schlimmsten -
ich habe das auch schonmal gebraucht und hatte das hier benutzt: