# [utf8 -> ANSI]copie d'une partition française vers une AINSI

## prunkdump

Bonjours à tous!

Voilà, les problèmes de localisations m'ont toujours beaucoup énervés, mais là quand en plus le problème me résiste....

Donc j'ai une partition VFAT (FAT32)  sur mon disque dur, elle est française et possède donc des noms de fichiers avec des caractères accentués. Pour que ces accents apparaissent dans le gestionnaire de fichier de gnome j'ai monté la partition avec l'option "utf8" (ça marche très bien).

|?| Déjà je ne comprend pas l'utilité de cette option? pourquoi mount a t-il besoin de savoir que les noms de fichier sont en utf8? Peut être ma partition n'est pas en utf8 mais que cette option réalise une conversion? dans le man ce n'est pas très clair.

Ensuite on m'à ramené de chine un disque dur NTFS que j'ai monté avec ntfsmount de ntfs-progs. Tout marche très bien, mais bien sur ce disque ne supporte pas les noms de fichiers avec des caractères accentués. J'en déduit qu'il suit la norme ANSI X3.4-1968. 

Je voudrais quand même, quitte à perdre les accents et les caractères spéciaux, faire une copie de ma partition française vers la partition ntfs ANSI. Mais je n'ai trouvé aucune solution pour l'instant. "convmv" ne fait pas exactement ça et j'ai essayé avec des scripts shell mais ça ne donne jamais le résultat attendu.

|?| Donc si quelqu'un à une idée sur comment réaliser cette copie, je suis preneur.

|?| Dernière question,  j'ai un genre de bug dans mes terminaux si j'active les caractères utf8. L'orsque je tape un "é" par exemple, comme son encodage dépasse les 7bits, il me faut deux retour arrière pour l'éffacer mais au bout du premier le caractère disparait. C'est difficile à expliquer :

monpc$ é             (je tape é)

monpc$                ( premier retour arrière le caractère disparait)

monpc                  (deuxième retour arrière, ça efface le $ )

PS: l'utf8 en mode console n'est pas vraiment indispensable puisque on peut manipuler les fichiers même si les caractères ne s'affichent pas bien, mais ce bug m'intrigue.

Merci!

----------

## Leander256

Salut, ces problèmes d'encodage c'est effectivement toujours la galère.

D'après ce que je comprends de man mount, tu dois utiliser l'option utf8 pour ta partition FAT32 afin que l'affichage des noms se fasse en UTF-8, donc que le noyau convertisse les noms de fichier de l'encodage utilisé sur la FAT32 (très probablement du CP437 puisque tu es français) en un encodage qui fera plaisir à ton système (donc dans ce cas-là UTF-8). Si on considère que ton système est en UTF-8 c'est parfait.

Par contre quand tu penses que ton disque dur chinois NTFS est en ANSI X3.4-1968 je pense que tu fais fausse route. Il doit être en UTF-16, ou quelque chose d'équivalent. Apparemment les dernières versions de ntfs-3g convertissent automatiquement les noms de fichiers en UTF-8...

Mais tu as un problème avec UTF-8 si ça ne s'affiche pas correctement dans ta console, peut-être devrais-tu commencer par régler ce problème? As-tu lu ce guide de l'UTF-8?

----------

## prunkdump

Salut.

Bin en continuant à chercher j'ai presque résolue mon problème. En fait il semble que les sytèmes de fichiers n'imposent pas d'encodage des caractères particuliers. Mais que le noyau peut, pour avoir une plateforme mutilanguage, convertir les noms de fichiers en utf8. Il y à pour cela, ce fameux NLS (dont je ne comprend pas encore exactement le rôle).

Pourtant mon disque chinois en voulais pas au départ qu'on lui donne des noms de fichier accentué. ( Donc il y à bien des systèmes qui restreignent l'encodage des caractères tout de même ).

En fait le problème que j'avais venait du fait que j'avais gardé la variable "LC_CTYPE" à "C" en pensant que la console avais besoin de cela pour les comandes comme "ls" ou "sed". J'ai donc modifié celle ci en "fr_FR.utf8" grace au fichier "/etc/env.d/02locale" et ça marce beaucoup mieux.

->Les consoles le lances automatiquement en UTF8 alors qu'avant j'étais obligé de la réactiver.

->Il n'y à plus le problème du "é" et de son éffacement!

->même la commande "sed" fonctionne! (alors ça! ça m'en bouche un coin! je ne sais pas comment c'est possible sans recompiler). Je peux enlever les "é" grace à un script du type :

```

find . | sed y/é/e/

```

->ntfsmount me permet maintenant de mettre des accents sur les partitions ntfs! (mystère aussi ...)

Donc mon seul problème c'est que je ne sais pas faire un script shell qui copie un par un les fichiers récursivement en enlevant les "é" avec sed. Je sais le faire dans le cas non récursif avec la commande "find" "cp" et "sed".

Merci en tout cas pour ta réponse!

----------

## Ezka

De mémoire si tu actives le flag nls tes progs utiliseront gettext par exemple pour faire les conversions en cas de besoin sauf si le support est natif.

A partir de la si tes locales sont OK tu as bcp moins de problèmes d'encodage. En général ça marche =)

----------

