codage des caractères

Le
Archidemon
L'apparition d'un fichier dont le nom contient un e accent aigu me
cause des embarras. Lorsque je crée un fichier de vérification avec:

find . -name '*' -exec cksum  > list '{}' ';'

le fichier "list" ne contient pas le e accent aigu dont j'ai besoin
pour comparer avec une liste maîtresse.

Y a -t-il un moyen de faire en sorte que le fichier résultant ai un
codage compatible ou encore que je puisse déterminer le codage?

mes réglages sont:
$ locale
LANG="fr_CA.UTF-8"
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C"

.bash_profile
LC_ALL=C
export LC_ALL

Réglages de terminal: (tels que par défaut)
Codage des caractères: Unicode (UTF-8)
"Définir la variable d'environnement LANG au démarrage " est coché

Encodages du Terminal: (tels que par défaut)
Unicode (UTF-8)
Western (Mac OS Roman)
Western (ISO Latin 1)
Western (ISO Latin 9)
Western (Windows Latin 1)
Western (ASCII)
Western (NextStep)
Japanese (Mac OS)
Japanese (ISO 2022-JP)
Japanese (EUC)
Japanese (Shift JIS)
Corean (EUC)
Cyrillic (ISO 8859-5)
Russian (DOS)
Cyrillic (Windows)
Cyrillic (KOI8-R)
Chinese simplified (EUC)
Central European (ISO Latin 2)
Chinese traditional (Big 5-E)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Vincent Lefevre
Le #16766261
Dans l'article Archidemon
mes réglages sont:
$ locale
LANG="fr_CA.UTF-8"
LC_COLLATE="C"
LC_CTYPE="C"



L'encodage est donné par LC_CTYPE. C = ASCII.

.bash_profile
LC_ALL=C
export LC_ALL



Là, tu mets tout à la locale C. Ce n'est pas bon.

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Eric Levenez
Le #16767571
Le 09/09/08 16:31, dans
« Archidemon »
L'apparition d'un fichier dont le nom contient un e accent aigu me
cause des embarras. Lorsque je crée un fichier de vérification avec:

find . -name '*' -exec cksum  > list '{}' ';'

le fichier "list" ne contient pas le e accent aigu dont j'ai besoin
pour comparer avec une liste maîtresse.



D'abord ton find est bien étrange et marche sûrement un peu par hasard, le
plus simple :

find . -type f -exec cksum {} ; > /tmp/list

Ensuite, j'ai bien les accents dans list. J'ai tous les paramètres de Mac OS
X 10.5 par défaut. Ainsi Terminal est en UTF-8 et mon shell est bash. Je
n'ai bien sûr pas été définir les variables LC_*.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
Archidemon
Le #16769341
On 9 sep, 14:19, Eric Levenez
Le 09/09/08 16:31, dans
« Archidemon »
> L'apparition d'un fichier dont le nom contient un e accent aigu me
> cause des embarras. Lorsque je crée un fichier de vérification avec :

> find . -name '*' -exec cksum  > list '{}' ';'

> le fichier "list" ne contient pas le e accent aigu dont j'ai besoin
> pour comparer avec une liste maîtresse.

D'abord ton find est bien étrange et marche sûrement un peu par hasar d, le
plus simple :

    find . -type f -exec cksum {} ; > /tmp/list



Merci j'en prends note

Ensuite, j'ai bien les accents dans list. J'ai tous les paramètres de M ac OS
X 10.5 par défaut. Ainsi Terminal est en UTF-8 et mon shell est bash. J e
n'ai bien sûr pas été définir les variables LC_*.



Il y a quelques mois, après être passé à Leopard mais avant
l'apparition du fichier avec un e accent aigu, la ligne de code
suivante:

cut -f1-1 -d, fullx > ty1 ; cut -f2-2 -d, fullx > ty2 ; cut -f3-3 -d,
fullx | tr A-Z a-z > ty3

me donnait:

cut: fullx: Illegal byte sequence
cut: fullx: Illegal byte sequence
cut: fullx: Illegal byte sequence

J'ai résolu le problème avec mon .bash_profile.

Ça a bien fonctionné. Je suis prêt à me débarrasser de
mon .bash_profile mais quoi faire?

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.


Archidemon
Le #16769331
On 9 sep, 12:08, Vincent Lefevre
Dans l'article   Archidemon
> mes réglages sont:
> $ locale
> LANG="fr_CA.UTF-8"
> LC_COLLATE="C"
> LC_CTYPE="C"

L'encodage est donné par LC_CTYPE. C = ASCII.

> .bash_profile
> LC_ALL=C
> export LC_ALL

Là, tu mets tout à la locale C. Ce n'est pas bon.



Veux-tu dire que je devrais tout simplement remplacer
mon .bash_profile par:

LC_CTYPE. C = ASCII

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


Vincent Lefevre
Le #16776101
Dans l'article Archidemon
Veux-tu dire que je devrais tout simplement remplacer
mon .bash_profile par:



LC_CTYPE. C = ASCII



Non, ce que je dis, c'est que la locale C correspond à l'ASCII.
Ne touche pas aux locales dans ton .bash_profile. Si ça ne
fonctionne pas:

export LC_CTYPE=en_US.UTF-8

ou la langue voulue au lieu de en_US.

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Vincent Lefevre
Le #16776091
Dans l'article Archidemon
Il y a quelques mois, après être passé à Leopard mais avant
l'apparition du fichier avec un e accent aigu, la ligne de code
suivante:



cut -f1-1 -d, fullx > ty1 ; cut -f2-2 -d, fullx > ty2 ; cut -f3-3 -d,
fullx | tr A-Z a-z > ty3



me donnait:



cut: fullx: Illegal byte sequence
cut: fullx: Illegal byte sequence
cut: fullx: Illegal byte sequence



Ah, c'est différent. Là ça n'a rien à voir avec le nom du fichier.
C'est le contenu de fullx qui pose problème. Ce que tu veux, c'est:

(export LC_ALL=C; cut -f1-1 -d, fullx > ty1 ; cut -f2-2 -d, fullx > ty2 ; cut -f3-3 -d, fullx | tr A-Z a-z > ty3)

Note: les parenthèses permettent de lancer le tout dans un sous-shell.
Ainsi la modification de l'environnement (LC_ALL=C) sera uniquement
locale. En gros, mettre LC_ALL=C revient plus ou moins à désactiver
les locales: on passe au comportement "par défaut". En particulier,
le cut ne va pas chercher à interpréter les octets comme caractères
spécifiques (pour les non-ASCII). C'est utile si tu es en UTF-8 mais
que certains de tes fichiers sont en ISO-8859-*.

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Archidemon
Le #16797001
On 10 sep, 10:38, Vincent Lefevre
Dans l'article   Archidemon
> Il y a quelques mois, après être passé à Leopard mais avant
> l'apparition du fichier avec un e accent aigu, la ligne de code
> suivante:
> cut -f1-1 -d, fullx > ty1 ; cut -f2-2 -d, fullx > ty2 ; cut -f3-3 -d,
> fullx | tr A-Z a-z > ty3
> me donnait:
> cut: fullx: Illegal byte sequence
> cut: fullx: Illegal byte sequence
> cut: fullx: Illegal byte sequence

Ah, c'est différent. Là ça n'a rien à voir avec le nom du fichier .
C'est le contenu de fullx qui pose problème. Ce que tu veux, c'est:

(export LC_ALL=C; cut -f1-1 -d, fullx > ty1 ; cut -f2-2 -d, fullx > ty2 ; cut -f3-3 -d, fullx | tr A-Z a-z > ty3)

Note: les parenthèses permettent de lancer le tout dans un sous-shell.
Ainsi la modification de l'environnement (LC_ALL=C) sera uniquement
locale. En gros, mettre LC_ALL=C revient plus ou moins à désactiver
les locales: on passe au comportement "par défaut". En particulier,
le cut ne va pas chercher à interpréter les octets comme caractères
spécifiques (pour les non-ASCII). C'est utile si tu es en UTF-8 mais
que certains de tes fichiers sont en ISO-8859-*.

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)



J'ai éliminé mon .profile et j'ai mis les parenthèses. En effet, je
n'ai pas de "Illegal byte sequence". Merci!

Toutefois, le résultat de:

find . -name '*' -exec cksum > list '{}' ';'

Ne contient toujours d'accent aigu.
Eric Levenez
Le #16797501
Le 12/09/08 19:31, dans
« Archidemon »
Toutefois, le résultat de:

find . -name '*' -exec cksum > list '{}' ';'



Pourquoi vouloir utiliser cette mauvaise syntaxe ?

Ne contient toujours d'accent aigu.



Il faut que tu supprimes tout ce que tu as fait pour retrouver un système
propre qui marchera sans aucun problème dans sa configuration d'origine.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
Archidemon
Le #16798201
On 12 sep, 14:11, Eric Levenez
Le 12/09/08 19:31, dans
« Archidemon »
> Toutefois, le résultat de:

> find . -name '*' -exec cksum  > list '{}' ';'

Pourquoi vouloir utiliser cette mauvaise syntaxe ?



Ce n'est qu'un exemple simplifié qui représente une ligne type que
j'utilise à plusieurs endroits. Voici un exemple concret:

find . -name '*.[Jj][Pp][Gg]' -exec cksum -o3 > temp1 '{}' ';'

et ça a toujours marché.

> Ne contient toujours d'accent aigu.

Il faut que tu supprimes tout ce que tu as fait pour retrouver un systè me
propre qui marchera sans aucun problème dans sa configuration d'origine .



Que dois-je supprimer exactement? veux-tu dire réinstaller Leopard?

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.


Eric Levenez
Le #16798331
Le 12/09/08 21:07, dans
« Archidemon »
On 12 sep, 14:11, Eric Levenez
Le 12/09/08 19:31, dans
« Archidemon »
Toutefois, le résultat de:



find . -name '*' -exec cksum  > list '{}' ';'



Pourquoi vouloir utiliser cette mauvaise syntaxe ?



Ce n'est qu'un exemple simplifié qui représente une ligne type que
j'utilise à plusieurs endroits. Voici un exemple concret:

find . -name '*.[Jj][Pp][Gg]' -exec cksum -o3 > temp1 '{}' ';'

et ça a toujours marché.



Marchouillé :-) Le '*' est peut-être pour éviter . et .., mais si tu as des
sous-répertoires, tu auras des erreurs avec cksum. De plus, on place
traditionnellement la redirection à la fin pour ne pas la mélanger aux
arguments, cela permet aussi de facilement chaîner les commandes.

Ne contient toujours d'accent aigu.



Il faut que tu supprimes tout ce que tu as fait pour retrouver un système
propre qui marchera sans aucun problème dans sa configuration d'origine.



Que dois-je supprimer exactement? veux-tu dire réinstaller Leopard?



Réinstaller non, mais toi seul sait ce que tu as fait sur ta machine. Essaye
par exemple en te connectant avec un nouveau compte pour voir si tout se
passe bien avec celui-ci. Après tu n'auras qu'à regarder les différences
entre les deux comptes.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.
Publicité
Poster une réponse
Anonyme