Итак, у меня есть веб-сайт, и я создаю скрипт python для вставки данных на веб-сайт, отправляя их в скрипт php в качестве запроса GET, но всякий раз, когда я помещаю скрипт без буквенных или числовых символов, например, (@[ ];:) Я получаю сообщение об ошибке urllib, говорящее, что в URL-адресе нет хоста:
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
Я также попытался создать свою собственную функцию escape, чтобы избежать всех специальных символов (или, по крайней мере, нескольких)
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
Но все равно ничего. Подскажите как решить эту проблему! Заранее спасибо.