Règles du forum

Le langage Ada uniquement, pas les compilateurs. Les questions de sémantique et de langage et les questions techniques liées à une application en particulier, son deux choses différentes. Si nécessaire, un forum sur GNAT et les autres compilateurs, tel JanusAda, sera ouvert.

Auteur Message
Beau Parleur
Avatar de l’utilisateur
Bonjour,
Je reviens avec un problème d'encodage des noms de fichiers avec des accents.
Je suis sur Gnu/Linux (debian), je compile avec l'option de gnatmake -gnatW8.
Je saisie les noms de fichiers dans une Wide_String que je passe à Make_Dir en faisant To_String.

Les fichiers sont créés correctement, mais les accents sont interprétés différemment par le shell (bash).

Par exemple, le fichier "Eléments" est affiché avec mon programme mais avec bash, le nom de fichier affiché avec ls est "El?ments".

inversement si je crée le même fichier avec bash, mon programme affiche "ElACments" en mode console

Merci pour votre aide.
Profil
Beau Parleur
Avatar de l’utilisateur
J'ai trouvé comment faire pour régler le problème.
Si je supprime l'option -gnatW8, presque tout s'arrange.

Je dis presque, parce que dans mon programme j'ai une chaîne litérale unicode pour afficher les image des pièces d'un jeu d'échec.

Du coup maintenant, je cherche comment déclarer un tableau de ces caractères unicode.

Dans mon code donc, j'ai ça à remplacer :

Source Ada : 

Images : Images_Type := "♔♕♖♗♘♙♚♛♜♝♞♟";

Merci pour votre aide.
Profil
Beau Parleur
Avatar de l’utilisateur
Bonjour,

J'ai tenté une compilation séparée pour chacune des bibliothèques mais je n'y arrive.

Soit j'affiche correctement l'unicode, soit je crée des fichiers avec des noms correctes.

C'est un chois, mais bon.
Profil
Beau Parleur
Avatar de l’utilisateur
Yes !

Depuis Ada 2012 Ada, s'est enrichie d'une bibliothèque pour manipuler les chaînes UTF-8
En faisant un find adainclude -exec grep sur UTF_Encoding on trouve les fichiers correspondant.

Du coup je compilerai mon projet avec -gnatW8 et je vais faire le nécessaire pour passer à l'OS mes Wide_String, en UTF 8 pour mon cas.


Et normalement, ça passe. Yes ! Merci à l'US DoD.
Merci à vous.

Bonjour Zen.
Profil
Administrateur
Avatar de l’utilisateur
Désolé de ne pas être beaucoup disponible pour ces questions.

J’en profite juste pour dire que les paquets pour les fonctions de listage des répertoires, avec GNAT, ont des problèmes avec les noms de fichiers et de dossiers contenant certains caractères, et c’est sans rapport avec les fonctions de manipulation d’encodages.
Profil
Beau Parleur
Avatar de l’utilisateur
Bonjour Hibou.
Tu aurais la liste de ces caractères ?
Profil
Administrateur
Avatar de l’utilisateur
Il me semble que ce sont ceux en dehors du jeux de caractères Latin‑1, également nommé ISO 8859‑1.

À moins que ça n’ait été corrigé depuis …
Profil
Beau Parleur
Avatar de l’utilisateur
Merci Hibou.

Je suis resté à la table ASCII tendu en terme de connaissance des tables de caractères.

Mais j'ai lu hier en cherchant une soluce à mon problème, qu'on pouvais à présent écrire avec Ada et les caractères unicode.

Il me semble que c'est largement plus vaste que l'initial Latin_1 de Ada83.
Mais je suis pas très fort en informatique. C'est tellement vaste et complexe.
Merci pour ta réponse en tout cas.
Profil
Administrateur
Avatar de l’utilisateur
Le problème dont je parlais, est spécifique à un paquet pour l’accès aux répertoires, seulement à ce paquet là, indépendamment du support Unicode.

J’avais découvert ce problème en aidant des étudiants à faire un TP en Ada. Le programme devait lister récursivement des fichiers dans des répertoires, pour indexer leurs contenus. Pendant des tests, j’avais remarqué des erreurs avec les fichiers dont les noms comportaient certains caractères.
Profil
Beau Parleur
Avatar de l’utilisateur
Ok, merci Hibou.
Profil