[英]python tornado: encode and decode about url
我正在用龍卷風構建Web服務器。 您可以搜索關鍵字並從服務器獲得答復。
用戶可以輸入任何單詞,例如中文或日語,因此我知道我應該使用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?æ³°å½content
但是,我將日志文件發送到Windows並以txt
格式打開,它顯示一個中文單詞:泰國。
我現在很困惑。 我使用PC(Mac OS)並鍵入泰國
來訪問我的Web服務器,一切正常。 但是似乎有人試圖用我不知道的特殊編碼方式來搜索相同的中文單詞,因此無法對其進行解碼。
一種可能性是某些瀏覽器將在可能的情況下默認使用非UTF-8編碼(我不確定這是怎么回事,因為這對於latin-1
編碼最為常見)。 在表單中的隱藏輸入中僅包含一個只能以UTF-8表示的字段,這將迫使瀏覽器使用該編碼:
<input name="utf8" type="hidden" value="✓" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.