【发布时间】:2019-02-15 08:00:18
【问题描述】:
我有一种情况,我想将查询字符串中的十六进制值传递给用 Python 编写的服务器代码。我看到了这个答案 URL 看起来像(如果我希望 b 包含 0x80):
www.example.com/page?a=10&b=%80
我在 Python 中执行了以下步骤(我想打印并检查是否能够获取 0x80):
#!/usr/bin/python3
import cgitb
import urllib.parse
import os
cgitb.enable()
# Print necessary headers.
print("Content-Type: text/html")
print()
query = os.environ.get('QUERY_STRING')
query = urllib.parse.unquote(query)
# Not able to use print(query) -- throws error
query_print = query.encode('utf-8')
print(query_print)
我得到以下输出:
b'a=10&b=\xef\xbf\xbd'
我做错了什么?是我打印的方式吗?
【问题讨论】:
-
抛出什么异常?
-
@KristiyanGospodinov: UnicodeEncodeError: 'ascii' codec can't encode character '\\ufffd' in position 7: ordinal not in range(128)
标签: python python-3.x query-string