2017-06-28 9 views
0

私は竜巻でWebサーバーを構築しています。キーワードを検索し、サーバーから返信することができます。
python tornado:URLのエンコードとデコード

ユーザーは中国語や日本語などの任意の単語を入力できるため、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')) 
      ... 
      ... 

今度は、ユーザーが中国語の単語を検索するとしましょう:泰国
は、以下のように私に結果が得られます:

%E6%B3%B0%E5%9B%BD 
泰国 

バックエンド部分では、泰国を使用します。

これですべては問題ありません。

今日、私は私のログにいくつかの奇妙な言葉を見つける:しかし、私は送っ
enter image description here

country-cn.html?æ³°å½content enter image description here

は、その後、私はそれがどのように見えるとして、それは示して、私のブラウザにコピーログファイルをWindowsにコピーしてtxtという名前で開くと、泰国という中国語の単語が表示されます。

今は完全に混乱しています。私は自分のPC(Mac OS)を使用して泰国と入力して、私のWebサーバーにアクセスしてください。しかし、それは私がそれを解読することができないように私が知らない特別なエンコーディング方法で同じ中国語の単語を検索しようとしていた人がいるようです。

答えて

0

可能性がある場合、一部のブラウザでは非UTF-8エンコードがデフォルトに設定される可能性があります(latin-1のエンコードでは最も一般的なので、ここではこれが起こっているとは限りません)。フォームに隠れた入力をUTF-8でしか表現できないフィールドに置くと、ブラウザはそのエンコーディングを強制的に使用します:

<input name="utf8" type="hidden" value="&#x2713;" /> 
関連する問題