python tornado:关于url的编码和解码
我正在用tornado构建一个web服务器。您可以搜索关键字并从服务器获得回复。python tornado:关于url的编码和解码,python,utf-8,tornado,utf,Python,Utf 8,Tornado,Utf,我正在用tornado构建一个web服务器。您可以搜索关键字并从服务器获得回复。 用户可以键入任何单词,如中文或日语,因此我知道我应该使用UTF-8。 这是我的核心代码: class SearchHandler(tornado.web.RequestHandler): def get(self, path): try: print(self.get_argument('key')) print(urllib.parse.un
用户可以键入任何单词,如中文或日语,因此我知道我应该使用UTF-8。
这是我的核心代码:
class SearchHandler(tornado.web.RequestHandler):
def get(self, path):
try:
print(self.get_argument('key'))
print(urllib.parse.unquote(self.get_argument('key'))
val = urllib.parse.unquote(self.get_argument('key'))
...
...
现在让我们假设一个用户搜索了一个中文单词:泰国两个
print
将给出如下结果:%E6%B3%B0%E5%9B%BD
泰国
在后端部分,我将使用泰国代码>
现在一切都很好。
今天我在日志中发现了一些奇怪的词:
country cn.html?内容
然后我把它复制到我的浏览器中,它看起来像:
但是,我将日志文件发送到Windows并将其作为txt
打开,它显示了一个中文单词:泰国.
我现在完全糊涂了。我使用我的电脑(Mac OS)并键入泰国
要访问我的web服务器,一切正常。但似乎有人试图用一种我不知道的特殊编码方式来搜索同一个中文单词,所以我无法解码。
一种可能性是,一些浏览器在可能的情况下会默认使用非UTF-8编码(我不确定这是怎么回事,因为这在拉丁-1
编码中最常见)。在表单中添加一个隐藏的输入,其中包含一个只能用UTF-8表示的字段,这将迫使浏览器使用该编码:
<input name="utf8" type="hidden" value="✓" />