In einigen Umgebungen sieht ein Anhang mit einem japanischen Namen im Windows 8 Store App Mailer wie folgt aus: "% 1B% 24% 42 ~ .ext" oder "% EF% BF %% BA.ext". Es gab einen Fall. Es scheint, dass der ursprüngliche Dateiname als prozentual codiert behandelt wird. Ich kannte die grundlegenden Maßnahmen zum Empfangen mit dem richtigen Dateinamen nicht, wollte aber vorerst nur den Dateinamen herausfinden, also habe ich versucht, mit Python zu dekodieren.
In Python können Sie die prozentuale Codierung mit "urllib.parse.unquote" dekodieren. Als Ergebnis der Konvertierung mit dem folgenden Code:
unquote
import urllib.parse
a = '%1B%24%42%4A%3F%40%2E%1B%28%42%32%37%1B%24%42%47%2F%1B%28%42%2E%70%64%66'
urllib.parse.unquote(a)
Das Ergebnis ist "\ x1b $ BJ? @. \ X1b (B27 \ x1b $ BG / \ x1b (B.pdf" und kann nicht gelesen werden. Unquote gibt standardmäßig "encoding =" utf-8 "an. Es wird von utf-8 interpretiert, aber es scheint, dass es nicht normal dekodiert wird, so dass es ein anderer Zeichencode zu sein scheint.
Übrigens, wenn Sie nicht wissen, welcher Zeichencode ausgedrückt wurde, können Sie die ursprüngliche Zeichenfolge nicht wiederherstellen, daher müssen Sie den Zeichencode überprüfen. In der Zeichenfolge gibt es Muster wie "% 1B% 24% 42" und "% 1B% 28% 42". Dies ist der Code zum Umschalten des im JIS-Code verwendeten Modus. Aus diesem Grund kann erwartet werden, dass diese Zeichenfolge JIS-Code ist.
Der JIS-Code wird auch als ISO-2022-JP bezeichnet und scheint in Python unter dem Namen iso2022-jp behandelt zu werden (ist dies der offizielle Name?). Geben Sie den Zeichencode mit "encoding =" iso2022-jp "an und versuchen Sie es mit der Dekodierung.
unquote
import urllib.parse
s = '%1B%24%42%4A%3F%40%2E%1B%28%42%32%37%1B%24%42%47%2F%1B%28%42%2E%70%64%66'
urllib.parse.unquote(s, encoding='iso2022-jp')
Das Ergebnis war 2015.pdf
und ich konnte den Dateinamen sicher kennen.