[LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs (RÉSOLU)

Questions et astuces concernant l'installation et la configuration d'archlinux
Répondre
Matows
Hankyu
Messages : 16
Inscription : ven. 20 avr. 2018, 12:51

[LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs (RÉSOLU)

Message par Matows »

Bonjour !

Premier problème

Je viens vers vous après avoir pas mal cherché : actuellement, quand je fait un simple ls:

Code : Tout sélectionner

 Bureau           'Mod'$'\303\250''les'                            Public                                     listePaquet.txt
 Documents         Musique                                        'T'$'\303\251''l'$'\303\251''chargements'   save.tmp
 Enregistrements  'Nouveau document 1.2018_10_30_10_36_07.0.svg'  'Vid'$'\303\251''os'                        service.log
 Images            Projets                                         
Quand je fait un export LC_CTYPE=fr_FR.UTF-8, tout rentre dans l'ordre dans le terminal en cours d'utilisation.
Je poste quelque retour de commande :

locale

Code : Tout sélectionner

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Ne peut initialiser LC_ALL ? la locale par d?faut: Aucun fichier ou dossier de ce type
LANG=fr_FR.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE=C
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
locale -a

Code : Tout sélectionner

locale: Cannot set LC_CTYPE to default locale: No such file or directory
C
POSIX
fr_FR.utf8
cat /etc/locale.conf

Code : Tout sélectionner

LANG=fr_FR.UTF-8
LC_COLLATE=C
LC_CTYPE=fr_FR.UTF-8
cat /etc/locale.gen | grep -v "^#"

Code : Tout sélectionner

fr_FR.UTF-8 UTF-8
sudo grep -R LC_CTYPE /etc : http://termbin.com/8wf7

J'utilise ZSH avec le thème powerlevel9k
sudo grep -R LC_CTYPE ~/.oh-my-zsh : http://termbin.com/aaau

Voilà j'ai pas beaucoup d'idée... J'ai changé une ligne qui faisait référence à la locale anglaise dans le thème powerlevel94 mais ça n'a pas donné grand chose.

Second problème

Je sais pas si le problème précédent a à voir, mais il y a des caractères que je ne peux pas voir que ce soit sous Firefox ou Chromium. Par exemple sur wikipedia.org (la page d'accueil) il y a deux langues donc les caractères ne font pas partie des caractère français. Je ne peux pas voir ces caractères.
Et pour le coup, je ne sais pas quel retour de commande vous donnés :?

Merci d'avoir pris le temps de lire mon poste !
Dernière modification par Matows le ven. 02 nov. 2018, 01:36, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par benjarobin »

Bonjour,
On va uniquement traiter du premier problème dans ce sujet. C'est plus simple pour suivre. Je te conseil de créer un 2ième sujet pour le 2ième problème.

Tu ne devrait pas configurer de valeur pour LC_CTYPE via /etc/locale.conf, en effet la valeur LANG est normalement suffisante.

Peux tu donner la sortie de :

Code : Tout sélectionner

env | grep -E "LANG|LC_"
cat /etc/environment
Il y a apparemment "quelqu'un" qui a définit la variable LC_CTYPE à en_US.UTF-8.
Cela vient peut être de ta configuration de oh-my-zsh
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Matows
Hankyu
Messages : 16
Inscription : ven. 20 avr. 2018, 12:51

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par Matows »

benjarobin a écrit : mar. 30 oct. 2018, 19:22 Bonjour,
On va uniquement traiter du premier problème dans ce sujet. C'est plus simple pour suivre. Je te conseil de créer un 2ième sujet pour le 2ième problème.

Tu ne devrait pas configurer de valeur pour LC_CTYPE via /etc/locale.conf, en effet la valeur LANG est normalement suffisante.

Peux tu donner la sortie de :

Code : Tout sélectionner

env | grep -E "LANG|LC_"
cat /etc/environment
Il y a apparemment "quelqu'un" qui a définit la variable LC_CTYPE à en_US.UTF-8.
Cela vient peut être de ta configuration de oh-my-zsh
Bonsoir et merci de m'avoir répondu !
Pas de problème, je créerai une deuxième sujet par la suite.
J'avais en effet configurer la valeur de LC_CTYPE dans /etc/locale.conf le mois dernier car cela avait résolu mon problème.

Voici le retour des commandes (sans avoir enlevé LC_CTYPE de /etc/locale.conf) :

env | grep -E "LANG|LC_"

Code : Tout sélectionner

LANG=fr_FR.UTF-8
GDM_LANG=fr_FR.UTF-8
LC_COLLATE=C
LC_CTYPE=en_US.UTF-8
cat /etc/environment

Code : Tout sélectionner

#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
Et je suis d'accord que cela pourrait venir de ma configuration de oh-my-zsh, mais comment en être sûr ? N'y aurait-il pas une commande permettant de savoir quel programme a modifier LC_CTYPE en dernier ?
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par waitnsea »

Matows a écrit : mer. 31 oct. 2018, 01:46 N'y aurait-il pas une commande permettant de savoir quel programme a modifier LC_CTYPE en dernier ?
Bonjour,
Il n'y a pas une, mais plusieurs commandes nécessaires, pour avoir des locales correctes
Dans ce post tu trouveras une petite synthèse, n'oublie pas de lancer le script de vérif en sudo.
Par contre tu devras trouver la cause dans tes .zshhrc - pour ma part j'ai préféré me contenter de la solution du wiki : uniquement grml-zsh-config plutôt que "l'usine à gaz" oh-my-zsh, mais tu en as peut-être besoin...
Matows
Hankyu
Messages : 16
Inscription : ven. 20 avr. 2018, 12:51

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par Matows »

waitnsea a écrit : mer. 31 oct. 2018, 06:18
Matows a écrit : mer. 31 oct. 2018, 01:46 N'y aurait-il pas une commande permettant de savoir quel programme a modifier LC_CTYPE en dernier ?
Bonjour,
Il n'y a pas une, mais plusieurs commandes nécessaires, pour avoir des locales correctes
Dans ce post tu trouveras une petite synthèse, n'oublie pas de lancer le script de vérif en sudo.
Par contre tu devras trouver la cause dans tes .zshhrc - pour ma part j'ai préféré me contenter de la solution du wiki : uniquement grml-zsh-config plutôt que "l'usine à gaz" oh-my-zsh, mais tu en as peut-être besoin...
Merci de votre réponse ! Ce script m'a l'air bien pratique :D
Je poste le retour du script et je retourne bidouiller :

Code : Tout sélectionner

 * Parent:     987 /usr/lib/gnome-session-binary
 * Terminal:  2108 tilix
 * Shell:     2115 /bin/zsh

notice: Tried to guess parent process from $SESSION_MANAGER.
warning: (shell) LC_CTYPE: unsupported locale "en_US.UTF-8"
warning: LC_CTYPE: set by shell but not terminal (en_US.UTF-8 | none)

problem: Shell and terminal have different locale settings.
 * Your .bashrc or similar startup scripts may be overriding them.

problem: Your current locale is missing from the system.
 * The missing locales are:
   - en_US.utf8
 * Make sure /etc/locale.gen has the apropriate lines uncommented.
   After editing the file, run 'locale-gen' as root.

2 problems found. Here's a quick UTF-8 test for you:  --> ★ <--
 * a star             -- font and terminal are okay.
 * 3 question marks   -- your terminal does not correctly interpret UTF-8.
 * a box or rectangle -- UTF-8 works fine, but you need a better font.
 * empty area         -- you really need a better font or something.
Juste, si tout fonctionne bien, je n'ai normalement pas besoin de rajouté l'Anglais au locales ?

EDIT : J'ai rien contre les autres configurations disponibles pour ZSH, c'est juste que comme je suis nouveau sous Arch et que il y a plus de choix que sur Ubuntu (il faut bien avoir commencé quelque part :D), je prend le temps d'essayer différent DEs, Shells, configs etc.
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par waitnsea »

Matows a écrit : mer. 31 oct. 2018, 14:30 Je poste le retour du script et je retourne bidouiller :

Code : Tout sélectionner

 * Parent:     987 /usr/lib/gnome-session-binary
 * Terminal:  2108 tilix
 * Shell:     2115 /bin/zsh

notice: Tried to guess parent process from $SESSION_MANAGER.
warning: (shell) LC_CTYPE: unsupported locale "en_US.UTF-8"
warning: LC_CTYPE: set by shell but not terminal (en_US.UTF-8 | none)

problem: Shell and terminal have different locale settings.
 * Your .bashrc or similar startup scripts may be overriding them.

problem: Your current locale is missing from the system.
 * The missing locales are:
   - en_US.utf8
 * Make sure /etc/locale.gen has the apropriate lines uncommented.
   After editing the file, run 'locale-gen' as root.

2 problems found. Here's a quick UTF-8 test for you:  --> ★ <--
 * a star             -- font and terminal are okay.
 * 3 question marks   -- your terminal does not correctly interpret UTF-8.
 * a box or rectangle -- UTF-8 works fine, but you need a better font.
 * empty area         -- you really need a better font or something.
Juste, si tout fonctionne bien, je n'ai normalement pas besoin de rajouté l'Anglais au locales ?
Non tes locales ne sont pas correctement configurées, revois chaque étape du post donné, tout y est
Matows
Hankyu
Messages : 16
Inscription : ven. 20 avr. 2018, 12:51

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par Matows »

waitnsea a écrit : mer. 31 oct. 2018, 17:01
Matows a écrit : mer. 31 oct. 2018, 14:30 Je poste le retour du script et je retourne bidouiller :

Code : Tout sélectionner

 * Parent:     987 /usr/lib/gnome-session-binary
 * Terminal:  2108 tilix
 * Shell:     2115 /bin/zsh

notice: Tried to guess parent process from $SESSION_MANAGER.
warning: (shell) LC_CTYPE: unsupported locale "en_US.UTF-8"
warning: LC_CTYPE: set by shell but not terminal (en_US.UTF-8 | none)

problem: Shell and terminal have different locale settings.
 * Your .bashrc or similar startup scripts may be overriding them.

problem: Your current locale is missing from the system.
 * The missing locales are:
   - en_US.utf8
 * Make sure /etc/locale.gen has the apropriate lines uncommented.
   After editing the file, run 'locale-gen' as root.

2 problems found. Here's a quick UTF-8 test for you:  --> ★ <--
 * a star             -- font and terminal are okay.
 * 3 question marks   -- your terminal does not correctly interpret UTF-8.
 * a box or rectangle -- UTF-8 works fine, but you need a better font.
 * empty area         -- you really need a better font or something.
Juste, si tout fonctionne bien, je n'ai normalement pas besoin de rajouté l'Anglais au locales ?
Non tes locales ne sont pas correctement configurées, revois chaque étape du post donné, tout y est
J'ai pourtant suivi chaque étapes... Mais j'ai trouvé l'origine de mon problème : c'est mon thème de prompt, powerlevel9k, qui change la locale LC_CTYPE (j'ai changé de thème et ls retourne des noms normaux). Je vais donc réinstaller powerlevel9k et si le problème persiste, peut-être devrais-je ouvrir un rapport de bug ?

EDIT : La réinstallation ne résout pas le problème. Powerlevel9k était auparavant installé par clonage de dépot git, et maintenant directement depuis les paquets archlinux : ça ne change rien. Le thème pas défaut fourni avec oh-my-zsh fonctionne lui, très bien. :(
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par waitnsea »

Pourquoi, pour quel usage, veux-tu définir la variable LC_CTYPE ? C'est Gnome qui veut ça ??? Je n'en ai, pour ma part aucun besoin.

Code : Tout sélectionner

cat /etc/environment 
#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
LANG=fr_FR.UTF-8
Ce qui, avec les autres définitions donne :

Code : Tout sélectionner

env | grep -E "LANG"
LANG=fr_FR.UTF-8
LANGUAGE=fr
Si tu en as besoin, je pense que c'est dans /etc/environment qu'elle devrait être définie, or ton retour était vide :
Matows a écrit : mer. 31 oct. 2018, 01:46 cat /etc/environment

Code : Tout sélectionner

#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
as-tu, depuis, renseigné tes variables dans ce fichier ?
waitnsea a écrit : dim. 02 juil. 2017, 07:04 * /etc/environment voir tuto , il vaut mieux qu'il ne contienne que

Code : Tout sélectionner

LANG=fr_FR.UTF-8
* ~/.config/locale.conf (obtenu par cp /etc/locale.conf ~/.config/locale.conf)
Note : ne pas définir LC_ALL pour ne pas masquer une mauvaise configuration
Edit: ici

Code : Tout sélectionner

It is worth saying that mixing LANG and LC_CTYPE can give unexpected results, because few people do that, so it is quite untested...
Re-Edit : en fait, si, elle existe chez moi mais semble s'être définie toute seule (avec locale-gen ?), et apparait dans

Code : Tout sélectionner

$ locale          
LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE=C
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
Matows
Hankyu
Messages : 16
Inscription : ven. 20 avr. 2018, 12:51

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par Matows »

waitnsea a écrit : jeu. 01 nov. 2018, 07:15 Pourquoi, pour quel usage, veux-tu définir la variable LC_CTYPE ? C'est Gnome qui veut ça ??? Je n'en ai, pour ma part aucun besoin.
Justement, je veux bien ne pas la définir mais il y a un programme (en l’occurrence un thème de ZSH) qui la change, ce qui perturbe l'affichage de plusieurs programmes en ligne de commande, et je me retrouve avec des programmes qui me parlent en anglais où qui affiche mal les caractères français.
(exemple avec ls et pacman)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par benjarobin »

Ok, j'ai regardé, et le bug est facilement corrigible. Il suffit de modifier functions/icons.zsh. Voici le patch corrigeant le souci :

Code : Tout sélectionner

diff --git a/functions/icons.zsh b/functions/icons.zsh
index d8661e6..6300d64 100755
--- a/functions/icons.zsh
+++ b/functions/icons.zsh
@@ -13,6 +13,7 @@
 
 # Initialize the icon list according to the user's `POWERLEVEL9K_MODE`.
 typeset -gAH icons
+() {
 case $POWERLEVEL9K_MODE in
   'flat'|'awesome-patched')
     # Awesome-Patched Font required! See:
@@ -528,6 +529,7 @@ esac
 if [[ "$POWERLEVEL9K_HIDE_BRANCH_ICON" == true ]]; then
     icons[VCS_BRANCH_ICON]=''
 fi
+}
 
 # Safety function for printing icons
 # Prints the named icon, or if that icon is undefined, the string name.
En gros tu dois ajouter () { ainsi que } aux endroits indiqués par le patch

Le bug à un an : https://github.com/bhilburn/powerlevel9k/issues/587
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Matows
Hankyu
Messages : 16
Inscription : ven. 20 avr. 2018, 12:51

Re: [LOCALE] LC_CTYPE différent de la valeur voulue et caractères non lisible dans navigateurs

Message par Matows »

benjarobin a écrit : jeu. 01 nov. 2018, 21:43 Ok, j'ai regardé, et le bug est facilement corrigible. Il suffit de modifier functions/icons.zsh. Voici le patch corrigeant le souci :

Code : Tout sélectionner

diff --git a/functions/icons.zsh b/functions/icons.zsh
index d8661e6..6300d64 100755
--- a/functions/icons.zsh
+++ b/functions/icons.zsh
@@ -13,6 +13,7 @@
 
 # Initialize the icon list according to the user's `POWERLEVEL9K_MODE`.
 typeset -gAH icons
+() {
 case $POWERLEVEL9K_MODE in
   'flat'|'awesome-patched')
     # Awesome-Patched Font required! See:
@@ -528,6 +529,7 @@ esac
 if [[ "$POWERLEVEL9K_HIDE_BRANCH_ICON" == true ]]; then
     icons[VCS_BRANCH_ICON]=''
 fi
+}
 
 # Safety function for printing icons
 # Prints the named icon, or if that icon is undefined, the string name.
En gros tu dois ajouter () { ainsi que } aux endroits indiqués par le patch

Le bug à un an : https://github.com/bhilburn/powerlevel9k/issues/587
MERCI BEAUCOUP !
Il fallait y pensé au git diff ! :D

Je met de ce pas le sujet en résolut mais il me reste une petite question :
Si le problème date d'il y a un an, pourquoi ne m'affecte-t-il que maintenant ?

En tout cas je te remerci beaucoup benjarobin :)

Cordialement,
Matows'
Répondre