Bonjour,
J'ai un léger problème avec mon mini-NAS. J'essaye d'en créer un à partir d'un Odroid-HC1.
Ça marche très bien.
Bon par-contre, j'ai un problème assez perturbant lié à ls
et à ranger
(mon gestionnaire de fichiers).
La commande ls
m'affiche bizarrement tous les caractères unicode.
Le reste du système gère correctement l'ensemble des caractères. echo Éh !
fonctionne correctement.
Le pire dans cette histoire, c'est que même les émojis fonctionnent.
Par exemple, j'ai un fichier sur le disque interne nommé 👍
(oui c'est son nom).
La commande ls
m'affiche : ''$'\360\237\221\215
.
La commande ls -b
m'affiche : \360\237\221\215
.
Par-contre, c'est là que ça devient n'importe-quoi. ls | cat
m'affiche 👍
.
Selon moi, ls
agit différemment en fonction du type de sortie et quand il affiche dans le terminal il ne gère pas l'unicode.
$ locale
LANG=fr_FR.UTF-8
LANGUAGE=fr_FR:fr
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
Ça fait beaucoup de "C"
à mon goût mais il me semble que c'est une valeur qui ne pose pas problème.
Vous avez une idée de l'origine du problème ?
C'est perturbant à l'usage mais ne pose pas de problème important.
Merci ^
ache
# LC_ALL, LC_CTYPE
Posté par Cyril Brulebois (site web personnel) . Évalué à 4.
La variable
LC_ALL
prend le pas sur tout le reste…Sur un environnement configuré en anglais britannique et en UTF-8 :
il suffit de positionner
LC_TIME=C
pour reproduire le problème d'affichage parls
.Plus d'infos sur https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html. Extrait :
Ne pas toucher à
LC_TIME
mais positionnerLC_ALL=C
produit le même effet, vu l'override mentionné au début.Debian Consultant @ DEBAMAX
[^] # Re: LC_ALL, LC_CTYPE
Posté par ache (site web personnel) . Évalué à 1. Dernière modification le 30 juillet 2019 à 05:27.
Merci, c'est effectivement ça.
Je ne comprend pas trop pourquoi
dpkg
n'a pas fait son travail tout seul.LC_ALL=C
est dans/etc/environment
par défaut semble-t-il.Il y a certainement une raison mais je ne capte pas l’intérêt d'avoir ça. Bref, en supprimant la ligne de
LC_ALL
, tout rentre dans l'ordre.Merci bien ! Bonne journée ^
[^] # Re: LC_ALL, LC_CTYPE
Posté par Cyril Brulebois (site web personnel) . Évalué à 1.
Je ne vois pas trop le rapport avec
dpkg
. Si tu es sur une distribution (basée sur) Debian, c'est l'installation et la configuration du paquetlocales
qui permettent de jouer sur le contenu des fichiers/etc/environment
et/etc/default/locale
. Sur le même système que précédemment,/etc/environment
est vide et le/etc/default/locale
contient :(Cf.
dpkg-reconfigure locales
pour changer la configuration et le contenu de ce fichier par effet de bord.)Le contenu que tu cites ressemble à une tentative de la personne qui a buildé ton image de faire disparaître toutes les warnings (notamment niveau Perl) concernant des locales non configurées, en positionnant cette variable une seule fois dans ce fichier. Ça devrait probablement ne pas rester dans ce fichier une fois l'image préparée… (Mais je joue aux devinettes, je peux me tromper…
;p
)Debian Consultant @ DEBAMAX
# encodage
Posté par David Marec . Évalué à 2. Dernière modification le 30 juillet 2019 à 22:04.
Il reste quand même quelque chose de perturbant.
Contrairement à
cat
qui va cracher ses octets tel que dans le terminal,ls
va parser le nom du fichier à afficher et vérifier s'il peut l'afficher.Pour cela il utilise les fonctions de type
mbrtowc
ouwcwidth
qui dépendent deLC_CTYPE
pour la conversion.S'il n'y arrive pas, comme dans votre cas, il devrait afficher des
?
(question mark) à la place.Pas le truc bizarre qui, remâché par
cat
,peut sortir un caractère correct …Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.