OVH Cloud OVH Cloud

Problème caractères accentués.

1 réponse
Avatar
Rémi Cocula
Les accents c'est vraiment pas la joie mais ça c'est pas une nouvelle.

Mon problème est le suivant:

Sur mon système Fedora je monte un lecteur réseau se trouvant sur un pc
Windows 98 avec la commande :

smbmount //vero/D /mnt/vero/d -o
username=xxx,password=xxx,fmask=0000,dmask=0000,rw,uid=remi

Mais je n'arrive pas à lire correctement les noms de fichiers créés sous
windows et comportant un caractère accentué.

J'ai fait des recherches sur Internet mais j'avoue que je n'ai pas trouvé la
solution et en plus je n'y comprends rien.
En plus les options iocharset et codepage de smbmount ne sont quasiment pas
documentées.

Alors voila, j'ai décider de faire des tests pour essayer de comprendre ce
qui pose problème.

Sur le pc Windows je crée un fichier du nom de rémi1 dans le
répertoire //vero/D/tmp2
Puis je fais un ls depuis ma machine Linux :

------------------------
[root@linuxduron tmp2]# pwd
/mnt/vero/d/tmp2
[root@linuxduron tmp2]# ls
r?mi1
[root@linuxduron tmp2]#
----------------------------

le é est affiché comme ? par ls.

maintenant je crée un fichier rémi2 depuis le Linux

-----------------------------------
[root@linuxduron tmp2]# touch rémi2
[root@linuxduron tmp2]# ls
rémi2 r?mi1
[root@linuxduron tmp2]# ls r*2 | od -t x1
0000000 72 c3 a9 6d 69 32 0a
0000007
[root@linuxduron tmp2]#
------------------------------------------

Cet affichage me montre que mon système Linux encode les noms de fichiers en
utf8 puisque le é est codé en C3A9 (dites moi si je me trompe).

Mais je n'arrive pas à savoir comment sont encodés les noms de fichiers de
Windows.

---------------------------------------------
[root@linuxduron tmp2]# ls r*1 | od -t x1
0000000 72 82 6d 69 31 0a
0000006
[root@linuxduron tmp2]#
----------------------------------------------

Je ne vois pas à quoi correspond ce 82 à la place du é.

Donc je me pose les questions suivantes :

- quel est l'encodage des noms de fichiers sous Windows ?
- Comment faire pour qu'a travers un montage Samba le système linux voit les
noms de fichiers comme s'ils étaient encodés en utf8.

1 réponse

Avatar
thierry
Rémi Cocula a écrit:
Les accents c'est vraiment pas la joie mais ça c'est pas une nouvelle.

- quel est l'encodage des noms de fichiers sous Windows ?
- Comment faire pour qu'a travers un montage Samba le système linux voit les
noms de fichiers comme s'ils étaient encodés en utf8.


En général les systèmes FR sous MS utilisent le code page 850 [MS-DOS
Latin 1] (exécuter la commande chcp sous DOS pour connaître la valeur
utilisée)
Une option de compilation du noyau Linux implémente cette option pour
les montages de type SMB (version 2.4 ..)
De plus sur un serveur SAMBA il existe les directives "client code page"
et "valid chars" dans le fichier smb.conf + "case sensitive" "preserve
case" "short preserve case" "mangle case" et "mangling char -> le ?"
Selon la distri les valeurs par défaut sont différentes => testparm
pour en connaître les valeurs
Personnellement j'ai réussi à régler ce problème de coding en repassant
à l'iso8859-15 sur le serveur Linux (+ recompilation du noyau ...)
Cependant l'option la plus sûre de traiter les noms de fichiers d'un
partage samba sous Linux est d'y accèder via un montage SMB en local sur
le serveur lui-même ..... là l'encodage est le même ......