Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

codage des caractères

21 réponses
Avatar
Archidemon
L'apparition d'un fichier dont le nom contient un e accent aigu me
cause des embarras. Lorsque je cr=E9e un fichier de v=E9rification avec:

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

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

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

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

.bash_profile
LC_ALL=3DC
export LC_ALL

R=E9glages de terminal: (tels que par d=E9faut)
Codage des caract=E8res: Unicode (UTF-8)
"D=E9finir la variable d'environnement LANG au d=E9marrage " est coch=E9

Encodages du Terminal: (tels que par d=E9faut)
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)

10 réponses

1 2 3
Avatar
Vincent Lefevre
Dans l'article ,
Archidemon écrit:

Toutefois, le résultat de:



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



Ne contient toujours d'accent aigu.



Il faudrait fournir un exemple complet montrant le problème.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Avatar
Archidemon
On 12 sep, 17:26, Vincent Lefevre <vincent+ wrote:
Dans l'article oups.com>,
  Archidemon écrit:

> Toutefois, le résultat de:
> find . -name '*' -exec cksum  > list '{}' ';'
> Ne contient toujours d'accent aigu.

Il faudrait fournir un exemple complet montrant le problème.



Le fichier 200809Unité1.jpg

passé par :

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

apparait comme:

6101250620 1145660 ./ 2008/200809UnitÃÅ/200809UnitÃÅ1.jpg

Au cas ou les caractères apparaîtraient mal, le "é" est replacé par un
A majuscule surmonté d'un tilde suivi d'un autre A majuscule avec un
"rond en chef" comme en suédois


--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


Avatar
Archidemon
On 12 sep, 15:17, Eric Levenez wrote:
Le 12/09/08 21:07, dans
,
« Archidemon » a écrit :



> On 12 sep, 14:11, Eric Levenez wrote:
>> Le 12/09/08 19:31, dans
>> ,
>> « Archidemon » a écrit :

>>> 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 t u 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 au x
arguments, cela permet aussi de facilement chaîner les commandes.



J'ai bel et bien des sous-répertoires mais je suis certain que ça
fonctionne. Pourrais-tu me dire comment tu formulerait cette command
exacte?

>>> 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'orig ine.

> 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. E ssaye
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ér ences
entre les deux comptes.



C'est une bonne idée, je vais voir.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Eric Levenez
Le 12/09/08 23:44, dans
,
« Archidemon » a écrit :

On 12 sep, 17:26, Vincent Lefevre <vincent+ wrote:
Dans l'article
,
  Archidemon écrit:

Toutefois, le résultat de:
find . -name '*' -exec cksum  > list '{}' ';'
Ne contient toujours d'accent aigu.



Il faudrait fournir un exemple complet montrant le problème.



Le fichier 200809Unité1.jpg

passé par :

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

apparait comme:

6101250620 1145660 ./ 2008/200809UnitÃÅ/200809UnitÃÅ1.jpg



Voici chez moi :

$ touch 200809Unité1.jpg
$ find . -iname "*.jpg" -exec cksum -o3 {} ; > temp1
$ cat temp1
0 0 ./200809Unité1.jpg

Quand tu dis "apparaît", tu fais comment pour afficher le contenu UTF-8 du
fichier "temp1" ? Tu n'utilises quand même pas un programme qui ne sais
qu'ouvrir de ISO-8859 ?


--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Avatar
Archidemon
On 13 sep, 03:38, Eric Levenez wrote:
Le 12/09/08 23:44, dans
,
« Archidemon » a écrit :



> On 12 sep, 17:26, Vincent Lefevre <vincent+ wrote:
>> Dans l'article
>> ,
>>  Archidemon écrit:

>>> Toutefois, le résultat de:
>>> find . -name '*' -exec cksum  > list '{}' ';'
>>> Ne contient toujours d'accent aigu.

>> Il faudrait fournir un exemple complet montrant le problème.

> Le fichier 200809Unité1.jpg

> passé par :

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

> apparait comme:

> 6101250620 1145660 ./ 2008/200809UnitÃÅ/200809UnitÃÅ1.jpg

Voici chez moi :

$ touch 200809Unité1.jpg
$ find . -iname "*.jpg" -exec cksum -o3 {} ; > temp1
$ cat temp1
0 0 ./200809Unité1.jpg

Quand tu dis "apparaît", tu fais comment pour afficher le contenu UTF-8 du
fichier "temp1" ? Tu n'utilises quand même pas un programme qui ne sais
qu'ouvrir de ISO-8859 ?



Quand j'utilise TextEdit pour voir temp1, le ÃÅ apparaît. De plus si
j'affiche le fichier qui contient les fichiers qui sont dans ma liste
maîtresse mais non sur mon disque dur avec TextEdit les accents aigus
deviennent des È. C'est à dire des E majuscules accent grave.

Ce qui est troublant, c'est que si j'utilise TextWrangler en UTF-8,
les deux fichiers me donnent des e accent aigu.

Il semble donc qu'ils diffèrent d'une certaine façon et que quand je
compare la liste de mon contenu avec ma liste maîtresse, mon système
voit une différence. Je fais cette comparaison depuis des années et
elle ne se manifeste que depuis qu'il y a un fichier contenant un
caractère accentué.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Eric Levenez
Le 13/09/08 14:24, dans
,
« Archidemon » a écrit :

On 13 sep, 03:38, Eric Levenez wrote:

Quand tu dis "apparaît", tu fais comment pour afficher le contenu UTF-8 du
fichier "temp1" ? Tu n'utilises quand même pas un programme qui ne sais
qu'ouvrir de ISO-8859 ?



Quand j'utilise TextEdit pour voir temp1, le ÃÅ apparaît.



Dans la fenêtre d'ouverture de TextEdit, il faut choisir comme "Encodage
format Texte" "Unicode (UTF-8)". Est-ce bien ce que tu fais ?

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Avatar
Archidemon
On 13 sep, 11:00, Eric Levenez wrote:
Le 13/09/08 14:24, dans
,
« Archidemon » a écrit :

> On 13 sep, 03:38, Eric Levenez wrote:

>> Quand tu dis "apparaît", tu fais comment pour afficher le contenu UT F-8 du
>> fichier "temp1" ? Tu n'utilises quand même pas un programme qui ne s ais
>> qu'ouvrir de ISO-8859 ?

> Quand j'utilise TextEdit pour voir temp1, le ÃÅ apparaît.

Dans la fenêtre d'ouverture de TextEdit, il faut choisir comme "Encodag e
format Texte" "Unicode (UTF-8)". Est-ce bien ce que tu fais ?



Je le fais et maintenant tout apparaît correctement. Merci!

Bien que qu'en apparence les noms de fichiers sont corrects, quand je
compare les noms avec les commandes diff, comm ou grep -f, ils restent
différents.

Avant que je convertisse la liste maîtresse en UTF-8 le "é" a une
valeur hexadécimale de "E9" après conversion: "C3 A9". Toutefois le
fichier que je crée qui contient la liste de mes fichiers lui donne
pour "é" une valeur hexadécimal de "CC 81".

Est-ce que un des deux est correct? Comment correctement convertir?
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Archidemon
On 14 sep, 14:22, Archidemon wrote:
On 13 sep, 11:00, Eric Levenez wrote:> Le 13/09/08 1 4:24, dans
> ,
> « Archidemon » a écrit :

> > On 13 sep, 03:38, Eric Levenez wrote:

> >> Quand tu dis "apparaît", tu fais comment pour afficher le contenu UTF-8 du
> >> fichier "temp1" ? Tu n'utilises quand même pas un programme qui ne sais
> >> qu'ouvrir de ISO-8859 ?

> > Quand j'utilise TextEdit pour voir temp1, le ÃÅ apparaît.

> Dans la fenêtre d'ouverture de TextEdit, il faut choisir comme "Encod age
> format Texte" "Unicode (UTF-8)". Est-ce bien ce que tu fais ?

Je le fais et maintenant tout apparaît correctement. Merci!

Bien que qu'en apparence les noms de fichiers sont corrects, quand je
compare les noms avec les commandes diff, comm ou grep -f, ils restent
différents.

Avant que je convertisse la liste maîtresse en UTF-8 le "é" a une
valeur hexadécimale de "E9" après conversion: "C3 A9". Toutefois le
fichier que je crée qui contient la liste de mes fichiers lui donne
pour "é" une valeur hexadécimal de "CC 81".



Je veux dire "65 CC 81" au lieux de "CC 81".

Est-ce que un des deux est correct? Comment correctement convertir?

> --
> Éric Lévénez -- <http://www.levenez.com/>
> Unix is not only an OS, it's a way of life.


Avatar
Eric Levenez
Le 14/09/08 20:45, dans
,
« Archidemon » a écrit :

Avant que je convertisse la liste maîtresse en UTF-8 le "é" a une
valeur hexadécimale de "E9" après conversion: "C3 A9".





Il y a plusieurs façon de représenter le même caractère en UTF-8. Ces façons
de faire s'appellent NFC, NFD, NFKD et NFKC. Voir le document
<http://unicode.org/reports/tr15/>.

Le C3A9 est par exemple l'encodage classique du "é" (UTF-8 en NFC).

Toutefois le
fichier que je crée qui contient la liste de mes fichiers lui donne
pour "é" une valeur hexadécimal de "CC 81".



Je veux dire "65 CC 81" au lieux de "CC 81".



Là, c'est un "e" suivit de l'accent, soit de l'UTF-8 NFD.

Il n'est pas simple de comparer 2 chaînes UTF-8 venant de 2 programmes
différents à cause de ces problèmes d'encodage. Le plus simple est soit
d'être programmeur et d'utiliser des API Apple faite pour ces comparaisons.
Soit il faut passer par un programme pivot, qui servira à convertir de
l'UTF-8 format X en UTF-8 NFC. Je viens de tester TextEdit, mais il semble
sauvegarder sans faire de conversion (le NFD reste NFD).

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Avatar
Archidemon
On 14 sep, 15:06, Eric Levenez wrote:
Le 14/09/08 20:45, dans
,
« Archidemon » a écrit :

>> Avant que je convertisse la liste maîtresse en UTF-8 le "é" a une
>> valeur hexadécimale de "E9" après conversion: "C3 A9".

Il y a plusieurs façon de représenter le même caractère en UTF-8. Ces façons
de faire s'appellent NFC, NFD, NFKD et NFKC. Voir le document
<http://unicode.org/reports/tr15/>.

Le C3A9 est par exemple l'encodage classique du "é" (UTF-8 en NFC).

>> Toutefois le
>> fichier que je crée qui contient la liste de mes fichiers lui donne
>> pour "é" une valeur hexadécimal de "CC 81".

> Je veux dire "65 CC 81" au lieux de "CC 81".

Là, c'est un "e" suivit de l'accent, soit de l'UTF-8 NFD.

Il n'est pas simple de comparer 2 chaînes UTF-8 venant de 2 programmes
différents à cause de ces problèmes d'encodage. Le plus simple est soit
d'être programmeur et d'utiliser des API Apple faite pour ces comparais ons.
Soit il faut passer par un programme pivot, qui servira à convertir de
l'UTF-8 format X en UTF-8 NFC. Je viens de tester TextEdit, mais il sembl e
sauvegarder sans faire de conversion (le NFD reste NFD).



Wow! Ça c'est de l'information. Merci beaucoup!
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


1 2 3