J'ai de nombreux fichiers zip contenant des erreurs de codage pour les trémas allemands (äüöÄÜÖß). Ils apparaissent à la fois dans le nom de fichier.zip ainsi que dans les répertoires et fichiers inclus comme celui-ci:
- Fünf = Fu╠ênf
- Räuber = Ra╠êuber
- Überfall = U╠êberfall
etc. Habituellement, j'utilise Linux, mais à cause de ces problèmes, j'ai également essayé une machine virtuelle Windows7, mais cela entraîne le même désordre d'encodage. Sous Linux, j'ai joué avec convmv et detox, mais sans succès.
Quand j'utilise
- convmv -f iso-8859-1 -t utf8 --replace --notest -r *
Je reçois "Sauter, déjà UTF-8".
Des pensées à ce sujet?
find -type f -print0 |xargs -r -n1 -0 convmv -f WINDOWS-1252 -t UTF-8 --notest
Ceci recherche les fichiers du répertoire actuel et exécute convmv séparément sur chaque fichier. Le nom de fichier est placé sous forme de liste terminée par une valeur nulle.Réponses:
La raison pour laquelle vous obtenez l'avertissement "déjà UTF-8" est que ces chaînes sont vraiment déjà en UTF-8. Le caractère "ü" a été codé dans le style OSX sous la forme d'un "u" suivi des deux octets "\ xCC" et "\ x88". Ces deux octets forment ensemble la représentation UTF-8 de \ u0308, la tréma combinatoire.
Si vous regardez la liste de page de code 437 ici , vous verrez le caractère \ xCC comme "╠" et le caractère \ x88 comme "ê".
Tout ce que vous utilisez pour afficher ces séquences de caractères ne les interprète pas comme UTF-8 mais plutôt comme CP437.
Une preuve rapide, si vous lisez ruby, qui s'affiche comme prévu dans mon terminal UTF-8:
la source
Je suppose que c'est le système de fichiers que vous essayez de décompresser ou de manipuler les fichiers. FAT32 n'aimera pas vos trémas. Essayez de copier ces fichiers hors du lecteur flash (ou quoi d'autre), puis décompressez le fichier zip pour voir quel type de caractères les noms de fichiers produisent.
NTFS (Windows) et Ext4 (Mint) ne devraient pas avoir de problème avec le codage du nom.
Le codage du nom des fichiers zip eux-mêmes sur le système FAT32 ne changera probablement pas ou ne sera pas corrigé lorsque vous les copiez dans un système de fichiers de suppression approprié, mais les sous-répertoires lors de la décompression devraient convenir.
la source
Notez d'abord que l'encodage de caractères est sa propre section de l'enfer. Dans le monde Windows, il existe toujours un dualisme désagréable entre UTF-8 et M $ jouant stupide pendant longtemps et insistant sur ISO-8859 (devinez qui l'a inventé). Comme mentionné ci-dessus, cela a presque certainement quelque chose à voir avec le système de fichiers. Ma solution n'est pas une solution technique, mais une solution qui fonctionne pour moi depuis de nombreuses années maintenant:
Mon conseil personnel pour les noms de fichiers est toujours le même: restez avec les caractères alphanumériques plus le tiret (-) et le trait de soulignement (_). Écrivez umlaute comme ae, ue et oe. N'utilisez pas d'espaces ni d'autres caractères spéciaux. C'est un peu gênant au début, mais cela vous évitera beaucoup de douleur dans des endroits inattendus.
En remarque: oui, c'est une sorte de "hack" désagréable mais si vous travaillez sur plusieurs plateformes, vous devez souvent vous rabattre sur le dernier dénominateur commun. Vous tiendriez pour acquis que quelque chose de basique comme l'encodage de caractères serait une norme difficile, mais il s'avère que les normes sont difficiles à obtenir. Ce XKCD résume assez bien
la source