Correction du codage des trémas allemands dans les répertoires et les noms de fichiers (ü = u╠ê et ainsi de suite)

13

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?

Cidre
la source
Quel système antique utilisez-vous? Toutes les distributions Linux actuelles utilisent maintenant UTF-8.
BatchyX
Serait-ce un problème de système de fichiers? Peut-être qu'il n'est pas monté en UTF?
terdon
J'utilise Linux Mint 13 (basé sur Ubuntu 12.04 LTS avec Kernel 3.2.0-23), donc c'est loin d'être antique. Et comme je l'ai déjà écrit, j'ai également essayé ces fichiers sur une machine virtuelle Windows 7. Mais bien sûr, je ne sais pas ce que celui qui a créé les fichiers zip a utilisé.
cidre
1
Cet encodage semble être une sorte d'encodage DOS. Habituellement, si je vois des problèmes avec le codage UTF8, les trémas allemands ressemblent à ä = ä ou Ü = Ãœ
cidre
@cider try 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.
Manwe

Réponses:

2

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:

$ ruby -e 'puts "u\xCC\x88"' | iconv -f cp437 -t utf-8
ü
$ ruby -e 'puts "u\xCC\x88"'
ü
S2VpdGgA
la source
0

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.

CenterOrbit
la source
0

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

paradoxon
la source
Je suis malade et fatigué de problèmes de codage dans les noms de fichiers lorsque j'essaie (et échoue) de synchroniser des fichiers entre Mac, Windows et Linux (via Syncthing). J'adapterais vos conseils, cependant en turc il y a ç, ş, ı, ğ, ü, ö, pas pratique d'écrire en alphanumérique. Je veux m'abstenir d'utiliser le stockage cloud, mais ce problème m'y oblige.
Teo