Dim*_*kov 3 python url encoding
我有以下网址“mysite.com/\\u0422\\u0435\\u043A\\u0441\\u0442 \\u043D\\u0430 \\u043A\\u0438\\u0440\\u0438\\u043B\\u0438\ \u0446\\u0430" ("mysite.com/\xd0\xa2\xd0\xb5\xd0\xba\xd1\x81\xd1\x82 \xd0\xbd\xd0\xb0 \xd0\xba\xd0\xb8\xd1 \x80\xd0\xb8\xd0\xbb\xd0\xb8\xd1\x86\xd0\xb0")。我想使用 browser.open(link) 打开这个 URL,其中 browser 是
\n\n$CHandler = urllib2.HTTPCookieProcessor(cookielib.CookieJar())\nbrowser = urllib2.build_opener(CHandler)\nuser_agent = \' Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17\'\nbrowser.addheaders = [(\'User-agent\', user_agent )]\nurllib2.install_opener(browser)\nRun Code Online (Sandbox Code Playgroud)\n\n但是我收到错误:
\n\n\n\n\nUnicodeEncodeError: \'ascii\' 编解码器无法对位置 12-17 中的字符进行编码:序数不在范围内 (128)"
\n
我从 JSON 中获取此 URL。
\n\n我该如何解决这个问题?
\nmysite.com/\xd0\xa2\xd0\xb5\xd0\xba\xd1\x81\xd1\x82 \xd0\xbd\xd0\xb0 \xd0\xba\xd0\xb8\xd1\x80\xd0\xb8\xd0\xbb\xd0\xb8\xd1\x86\xd0\xb0不是一个网址:
因此,您需要修复损坏的问题,% 编码带外字符(例如空格 -> %20),添加架构(如果丢失),然后将 IRI 转换为 URI。要执行此转换,您需要使用IDN算法 (Python: s.encode(\'idna\')) 对地址的主机名部分进行编码,然后使用 UTF-8 和 % 编码对地址其他部分中的任何非 ASCII 字符进行编码。
你想要的最终结果是:
\n\nhttp://mysite.com/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%20%D0%BD%D0%B0%20%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%B8%D1%86%D0%B0\nRun Code Online (Sandbox Code Playgroud)\n\n这是 接受的有效 URI urllib2,但当http://mysite.com/\xd0\xa2\xd0\xb5\xd0\xba\xd1\x81\xd1\x82 \xd0\xbd\xd0\xb0 \xd0\xba\xd0\xb8\xd1\x80\xd0\xb8\xd0\xbb\xd0\xb8\xd1\x86\xd0\xb0您关注它时,它也会显示在浏览器的地址栏中。
有很多关于实现 IRI 到 URI 的函数(大多数 Python Web 框架都有类似的函数)。如果您想全力纠正和规范可疑传入 URL,也可以使用此.
\n