web-dev-qa-db-fra.com

La meilleure pratique pour remplacer les caractères inconnus des jeux de caractères inconnus dans les noms de fichiers?

c'est-à-dire que j'ai un fichier appelé Porträt.pdf.

Mais le nom de fichier a été créé avec un jeu de caractères qui ne s'affiche pas correctement dans Ubuntu, comme dans l'exemple suivant.

enter image description here

Quelle serait la meilleure pratique pour renommer de tels caractères dans les noms de fichiers, lorsque vous avez plusieurs noms de fichiers et que vous ne pouvez pas utiliser ce caractère spécial à cause de son codage dans les commandes de terminal?

6
NES

En théorie, il peut être difficile de connaître le codage de caractères utilisé par les fichiers, mais dans la plupart des cas, l'erreur provient de systèmes et de programmes Windows qui utilisent encore uniquement Latin1 au lieu de UTF-8. Exécutez convmv -f cp850 -t utf-8 * sans guillemets dans le dossier contenant les fichiers endommagés et essayez-le.

(Vous devez installer le paquet convmv)

7
user11842

Si vous voulez juste vous débarrasser de certains personnages, vous pouvez essayer ceci:

rename "s/[^A-Za-z0-9-_]/_/g"

Cela remplacerait chaque caractère qui n'est pas simplement un caractère, un nombre ou un tiret par un trait de soulignement. Exécutez-vous avec l'option -n pour voir ce qui se passe dans un essai.

1
Martin Ueding

Je suppose que les systèmes d’exploitation modernes choisissent souvent UTF-8 pour coder les noms de fichiers. En ce sens, le nom des fichiers ne pose aucun problème. Ce que vous avez expérimenté est probablement le résultat d'un nom de fichier créé avec un codage non UTF-8. C'est assez difficile de dire ce que vous pouvez faire avec ça, ça dépend aussi de ce que vous voulez. Si vous avez besoin du nom de fichier correct (par exemple "Porträt.pdf"), vous devez tout d'abord connaître l'encodage du nom de fichier d'origine, puis vous pouvez le convertir. Ce n'est pas si facile à "deviner" seulement car il y a énormément d'encodages très différents.

0
LGB