URLエンコードってもっと単純なはずだよね?
英数字とスペースと_-.*以外を%+二文字の16進数字列にして、スペースを+におきかえるだけだよね?