Dans quelques environnements, lorsque vous recevez une pièce jointe avec un nom japonais sur le mailer de l'application Windows 8 Store, elle ressemblera à % 1B% 24% 42 ~ .ext
ou% EF% BF %% BA.ext
. Il y avait un cas. Il semble que le nom du fichier d'origine soit traité comme étant codé en pourcentage.
Je ne connaissais pas les mesures de base à recevoir avec le nom de fichier correct, mais pour le moment, je voulais connaître uniquement le nom du fichier, alors j'ai essayé de décoder en utilisant Python.
En Python, vous pouvez décoder le pourcentage d'encodage en utilisant ʻurllib.parse.unquote`. Ainsi, à la suite de la conversion avec le code suivant,
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)
Le résultat est \ x1b $ BJ? @. \ X1b (B27 \ x1b $ BG / \ x1b (B.pdf
et ne peut pas être lu. Unquote spécifie ʻencoding = 'utf-8'` par défaut. Il est interprété par utf-8, mais il semble qu'il n'est pas décodé normalement, il semble donc être un code de caractère différent.
En passant, si vous ne savez pas quel code de caractère a été exprimé, vous ne pouvez pas restaurer la chaîne de caractères d'origine, vous devez donc vérifier le code de caractère. En regardant les chaînes de caractères, il existe des modèles tels que «% 1B% 24% 42» et «% 1B% 28% 42», qui est le code pour changer le mode utilisé dans le code JIS. À partir de là, on peut s'attendre à ce que cette chaîne de caractères soit du code JIS.
Le code JIS est également appelé ISO-2022-JP, et il semble qu'il soit géré par le nom iso2022-jp en Python (est-ce le nom officiel?). Spécifiez le code de caractère avec ʻencoding = 'iso2022-jp'` et essayez le décodage.
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')
Le résultat était «2015.pdf», et j'ai pu connaître le nom du fichier en toute sécurité.
Recommended Posts