Vérifier la validité chaîne utf8 en Python
Je suis en train de lire les noms de fichiers du système de fichiers, et je veux les envoyer, comme JSON codé tableau. Le problème est que les fichiers sur le système de fichiers peuvent être stockés dans des invalides de codage, et j'ai besoin de gérer cette situation d'omettre les noms de fichier non valide avant de le transmettre à json.dump
, sinon ce sera un échec.
Est-il un moyen de vérifier que ma chaîne de caractères (nom de fichier) contient utf-8 valide caractères?
Me choque. Pourquoi les fichiers ont pas UTF-8 valide les noms de fichiers?
c'est le nom de fichier qui n'est pas encodé en utf-8 ou est-ce que les données dans le fichier ?? je m confondre.
Comment sur logiciel buggy qui crée des noms de fichiers basés sur des balises ID3, sans vérification de l'encodage? Ou de montage (avec les mauvaises options) un vieux système de fichiers qui utilise une drôle de codage de caractères pour les noms de fichiers?
Non valide le codage peut être gros problème lorsque vous déplacez des données à partir de vieux (non utf-8) systèmes (comme WinXP avec les non-US/FR paramètres régionaux) et surtout de fichiers .zip et .archives rar, les fichiers créés sur ces systèmes
parce que le nom de fichier/système de fichiers peut être corrompu.
c'est le nom de fichier qui n'est pas encodé en utf-8 ou est-ce que les données dans le fichier ?? je m confondre.
Comment sur logiciel buggy qui crée des noms de fichiers basés sur des balises ID3, sans vérification de l'encodage? Ou de montage (avec les mauvaises options) un vieux système de fichiers qui utilise une drôle de codage de caractères pour les noms de fichiers?
Non valide le codage peut être gros problème lorsque vous déplacez des données à partir de vieux (non utf-8) systèmes (comme WinXP avec les non-US/FR paramètres régionaux) et surtout de fichiers .zip et .archives rar, les fichiers créés sur ces systèmes
parce que le nom de fichier/système de fichiers peut être corrompu.
OriginalL'auteur troex | 2011-03-10
Vous devez vous connecter pour publier un commentaire.
Comment essayer le suivant?
... basé sur une réponse à une question similaire ici: Comment écrire un chèque en python pour voir si le fichier est en UTF-8 valide?
la question n'est pas de demander si une chaîne Python est un
unicode
; il pose la question de savoir si les octets de la composition d'un nom de fichier dans le système de fichier sont valides UTF-8.Pour moi, j'ai effectivement eu pour attraper le UnicodeEncodeError erreur dans ce cas...
Ce ne sera pas attraper des chaînes de caractères qui contiennent de haute/basse de substitution (u+d800 u+dfff).
OriginalL'auteur Mark Longair