2017-06-28 2 views
0

Ich baue einen Webserver mit Tornado. Sie können Schlüsselwörter suchen und Antwort vom Server erhalten.
Python Tornado: kodieren und entschlüsseln über URL

Benutzer kann jedes Wort wie Chinesisch oder Japanisch eingeben, also weiß ich, dass ich UTF-8 verwenden sollte.

Hier ist meine Kern-Code:

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')) 
      ... 
      ... 

Lassen Sie uns jetzt sagen, dass ein Benutzer ein chinesisches Wort gesucht: 泰国
Die beiden print wird das Ergebnis geben Sie mir wie folgt:

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

Im Backend-Teil verwende ich 泰国.

Für jetzt ist alles in Ordnung.

Heute habe ich einige seltsame Worte in meinem Log finden: country-cn.html?æ³°å½content enter image description here

Dann ist es ich es in meinem Browser zu kopieren, zu zeigen, wie es aussieht: Aber
enter image description here

, sende ich die Protokolldatei zu einem Windows und öffnen Sie es als txt, es zeigt ein chinesisches Wort: 泰国.

Ich bin jetzt total verwirrt. Ich benutze meinen PC (Mac OS) und gebe 泰国 ein, um meinen Webserver zu besuchen, alles ist in Ordnung. Aber es scheint, dass irgendein Typ versuchte, das gleiche chinesische Wort mit einer speziellen Kodierungsweise zu suchen, die ich nicht kenne, also konnte ich es nicht entschlüsseln.

Antwort

0

Eine Möglichkeit ist, dass einige Browser standardmäßig auf Nicht-UTF-8-Kodierungen zurückgreifen (ich bin mir nicht sicher, was hier passiert, weil es am häufigsten für latin-1 Kodierungen ist). Wenn Sie eine verborgene Eingabe in Ihr Formular mit einem Feld einfügen, das nur in UTF-8 dargestellt werden kann, wird der Browser gezwungen, diese Codierung zu verwenden:

<input name="utf8" type="hidden" value="&#x2713;" />