[R] Lecture d'un fichier INI en UTF8 sans BOM

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
GMH
Niveau 6
Niveau 6
Messages : 227
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

[R] Lecture d'un fichier INI en UTF8 sans BOM

#1

Message par GMH »

Bonjour,

Mon programme compare chaque lettre d'un mot grec avec un tableau de voyelles enregistrées dans un fichier .INI
Si la lettre du mot grec est égale à une voyelle présente dans le fichier INI, le programme la remplace par un point.
Le mot qui s'affiche alors est composé de consonnes et de points.
Par exemple le mot τοῦτῷ s'affiche τ..τ.. L'élève doit retrouver le mot grec.

Un _ArrayDisplay() me montre que la récupération des valeurs grecques du fichier INI se fait par des signes nouveaux du type i¼. Ce qui explique l'échec de l'opération de comparaison :
Par exemple, au lieu d'obtenir τ..τ.. , on obtient le mot entier.

Si je tente de construire le tableau des voyelles grecques directement dans mon programme, celles-ci ne s'affichent pas dans mon code. Elles sont remplacées par des points d'interrogation.

Mais lorsque je construis le tableau des voyelles en récupérant les données dans un fichier TXT, la comparaison réussit. Les lettres grecques ne sont pas altérées.


Est-ce que je m'y prends mal pour récupérer les données du fichier INI , ou est-ce qu'il est inutile de s'acharner avec un fichier INI et que je dois me contenter d'un fichier texte ?

Je vous remercie de votre avis.
Modifié en dernier par GMH le dim. 24 janv. 2016 10:23, modifié 1 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] lecture d'un fichier INI en UTF8 sans BOM

#2

Message par orax »

Avec BinaryToString je suppose que ça ira.

Code : Tout sélectionner

#include <StringConstants.au3>
$r = IniRead("test.ini", "g", "g", "")
MsgBox(0, '', BinaryToString($r, $SB_UTF8))
GMH a écrit :Si je tente de construire le tableau des voyelles grecques directement dans mon programme, celles-ci ne s'affichent pas dans mon code. Elles sont remplacées par des points d'interrogation.
Il faudra changer l'encodage du fichier pour éviter ça. Depuis SciTE, dans File > Encoding.

On pourrait aussi faire comme ça pour éviter de passer par un fichier externe.

Code : Tout sélectionner

$s = "τοῦτῷ"
$s = StringRegExpReplace($s, "[οῦῷ]", ".")
MsgBox(0, '', $s)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
GMH
Niveau 6
Niveau 6
Messages : 227
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R] Lecture d'un fichier INI en UTF8 sans BOM

#3

Message par GMH »

Merci orax pour vos suggestions.

La fonction BinaryToString($r, 4)) permet parfaitement la récupération des valeurs de mon fichier INI dans le codage UTF8. Mon programme fonctionne à merveille.

Inclure le tableau de voyelles dans le code de mon programme serait moins intéressant, par le fait que je devrais recompiler mon code s'il me venait l'idée d'utiliser mon programme dans le cadre d'une autre langue, comme le russe ou le chinois. Il me paraît plus simple d'éditer simplement le fichier INI. Toutefois, je conserve dans mes archives la possibilité d'encoder de différentes manières mon code.

Je vous remercie beaucoup.
Répondre