9 lines
407 B
Tcl
9 lines
407 B
Tcl
# Encode all except "unreserved" characters; use UTF-8 for extended chars.
|
|
# See http://tools.ietf.org/html/rfc3986 §2.4 and §2.5
|
|
proc urlEncode {str} {
|
|
set uStr [encoding convertto utf-8 $str]
|
|
set chRE {[^-A-Za-z0-9._~\n]}; # Newline is special case!
|
|
set replacement {%[format "%02X" [scan "\\\0" "%c"]]}
|
|
return [string map {"\n" "%0A"} [subst [regsub -all $chRE $uStr $replacement]]]
|
|
}
|