Versuchen Sie, die verstümmelten Zeichen im angehängten Dateinamen mit Python zu entschlüsseln

Der angehängte Dateiname ist verstümmelt

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.

Mit Python 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.

Untersuche den Zeichencode

Ü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.

Mit Python erneut dekodieren

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.

Recommended Posts

Versuchen Sie, die verstümmelten Zeichen im angehängten Dateinamen mit Python zu entschlüsseln
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Extrahieren Sie die xz-Datei mit Python
[Python] Ändern Sie den Namen der Bilddatei in eine Seriennummer
[Python] Mit Python in eine CSV-Datei schreiben
Versuchen Sie, Facebook mit Python zu betreiben
Ausgabe in eine CSV-Datei mit Python
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Versuchen Sie, den kürzesten Weg mit Python + NetworkX + Social Data zu lösen
Versuchen Sie, Ihrer IFC-Datei mit IfcOpenShell Python eine Wand hinzuzufügen
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, sich mit Python bei qiita anzumelden
Überprüfen Sie die Existenz der Datei mit Python
Lesen wir die RINEX-Datei mit Python ①
Python Amateur versucht die Liste zusammenzufassen ①
Versuchen Sie, die Datei mit dem Befehl less neu zu schreiben
Der Weg zum Kompilieren zu Python 3 mit Thrift
Zeichencodeverarbeitung verglichen mit "An eine Wunde anhängen" ~ Verstümmelte Dateinamenoperation mit Python3 ~
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
Der Dateiname war in Python schlecht und ich war süchtig nach Import
Python / numpy> Lesen Sie die Datendatei mit der Elementnamenzeile> Verwenden Sie genfromtxt ()
Versuchen Sie, das Fizzbuzz-Problem mit Keras zu lösen
nginxparser: Versuchen Sie, die nginx-Konfigurationsdatei mit Python zu analysieren
Lesen einer CSV-Datei mit Python 2/3
Versuchen Sie, das Problem der Python-Klassenvererbung zu lösen
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Geben Sie die ausführbare Python-Datei an, die mit virtualenv verwendet werden soll
[Python] Wie man Excel-Dateien mit Pandas liest
Konvertieren Sie die SVG-Datei mit Python in png / ico
Begrüßen Sie die Welt mit Python mit IntelliJ
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Versuchen Sie, Python-Dokumente automatisch mit Sphinx zu generieren
Der einfachste Weg, OpenCV mit Python zu verwenden
Einführung in Python mit Atom (unterwegs)
Speichern Sie das Objekt in einer Datei mit pickle
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Zip mit Python extrahieren (unterstützt japanische Dateinamen)
Konvertieren Sie den Zeichencode der Datei mit Python3
Ich möchte mit Python in eine Datei schreiben
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
Versuchen Sie, das Problem des Handlungsreisenden mit einem genetischen Algorithmus (Python-Code) zu lösen.
Python / Unterprozess> Symbolischer Link Implementierung, um nur den Zieldateinamen abzurufen> os.readlink ()
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten
Python-Memorandum: Lesen Sie den Text und bearbeiten Sie den Dateinamen, während Sie die Zieldatei kopieren
So senden Sie automatisch E-Mails mit Anhängen mithilfe der Google Mail-API in Python
Versuchen Sie, die 4-Kern-CPU des Raspberry Pi 2 mit Parallel Python zu verbrauchen
Ich möchte den Dateinamen von DataLoader sehen
So erhalten Sie den Variablennamen selbst in Python
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
[Python] Versuchen Sie, die coole Antwort auf das FizzBuzz-Problem zu lesen
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
Versuchen Sie, mit Python zu übersetzen, während Sie das PDF-Layout beibehalten
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1