さて、私はWebサイトを持っており、データをGETリクエストとしてphpスクリプトに送信することで、Webサイトにデータを挿入するPythonスクリプトを作成していますが、アルファベットまたは数字以外のスクリプトを配置する場合は常にex(@ [ ]; :) urlにホストがないというurllibエラーが発生します:
return urllib.urlopen("http://this-is-an-example.com/thisisadirectory/file.php?f=Hello&v="+cgi.escape("This is@A#!T33ST::::;'[]{}"))
File "Python25\lib\urllib.py", line 82, in urlopen
return opener.open(url)
File "Python25\lib\urllib.py", line 190, in open
return getattr(self, name)(url)
File "Python25\lib\urllib.py", line 301, in open_http
if not host: raise IOError, ('http error', 'no host given')
IOError: [Errno http error] no host given
また、すべての特殊文字(または少なくともいくつか)をエスケープするために独自のエスケープ関数を作成してみました
full_escape_chars = {" ": "%20",
"<": "%3C",
">": "%3E",
"#": "%23",
"\%": "%25",
"{": "%7B",
"}": "%7D",
"|": "%7C",
"\\": "%5C",
"^": "%5E",
"~": "%7E",
"[": "%5B",
"]": "%5D",
"`": "%60",
";": "%3B",
"/": "%2F",
"?": "%3F",
":": "%3A",
"@": "%40",
"=": "%3D",
"&": "%26",
"$": "%24"}
def full_escape(s):
global full_escape_chars
for key in full_escape_chars.keys():
s = s.replace(key, full_escape_chars[key])
return s
しかし、それでも、何もありません。この問題を解決する方法を提案してください!前もって感謝します。