comment lire les caractères accentués dans un fichier texte ? - C - Programmation
Marsh Posté le 30-04-2006 à 22:21:34
1) il se passe quoi si le caractère est multioctet ?
2) (char*)c ça fait n'importe quoi
Marsh Posté le 30-04-2006 à 22:24:14
Flitz a écrit : je suis en train d'essayer de lire un fichier caractère par caractère mais ce fichier contient des caractères normaux mais aussi des accentués. |
Pour lire un fichier texte byte par byte, c'est
Code :
|
Marsh Posté le 30-04-2006 à 23:13:03
Aïe aïe aïe, que personne ne dise octet par octet !!!
Marsh Posté le 01-05-2006 à 12:01:58
merci de vos réponses
mais en fait j'ai tjrs du mal. Est-il possible qu'un caractère spécial tel "ä" "â" etc soient considérés comme 2 caractères (ou sur 2 octets) ?
De plus, avec fgetc qui renvoie un entier, comment je fais pour le transformer en char * après ? (car g_hash_table_lookup prend un char *)
Marsh Posté le 01-05-2006 à 13:06:24
oui, ça dépend de ton codage de caractère. si c'est de l'utf-8 par exemple, c'est exactement ce qui se passe.
Marsh Posté le 01-05-2006 à 13:07:39
http://developer.gnome.org/doc/API [...] -next-char
avec ce genre de chose, tu peux itérer caractère logique par caractère logique (et non char par char ce qui n'a aucun sens)
Marsh Posté le 01-05-2006 à 20:27:44
Taz a écrit : http://developer.gnome.org/doc/API [...] -next-char |
Merci beaucoup de ton aide et de ton lien, je ne savais pas que ce genre de chose existait. Je vais aller voir ça
bonne soirée
Marsh Posté le 02-05-2006 à 15:45:54
Si sous windows,
voir les fonctions CharToOem et OemToChar, avant l'affichage en console.
Marsh Posté le 30-04-2006 à 21:36:09
Bonjour,
je suis en train d'essayer de lire un fichier caractère par caractère mais ce fichier contient des caractères normaux mais aussi des accentués. Je ne parviens pas à obtenir qqch de correcte. Lorsque les caractères sont des normaux, pas de problème mais lorsqu'ils sont accentués ça patauge .
Est-ce que qqun saurait m'aider ?
Supposons le fichier déjà ouvert par fopen en lecture (texte). Pour récupérer un caractère j'utilise fread. L'ennui c'est que je ne maîtrise pas du tout ça et j'ai quelques soucis car ensuite je dois convertir ce caractère en char* (car une fonction de recherche dans une table de hachage utilise un argument char* et non char). J'ai essayé comme suit :
J'utilise un unsigned char pour avoir la taille du code ASCII étendu. Si je fais un printf pour voir le résultat bon ça n'affiche rien car c'est accentué et c'est pas supporté. Le problème que j'ai c'est alors de passer le "char c" vers un "char *" sans avoir d'ennui. Ca je ne parviens pas à le faire.
Je suis donc venu vous demander comment est-ce que vous vous feriez pour lire un fichier texte caractère par caractère sachant que certains sont des accentués (aigu, grave, tréma, circonflexe et ce que sur les minuscule et d'autres des majuscules) et qu'ensuite le caractère lu doit passer dans une fonction de recherche qui demande un (char *).
J'ai essayé de jouer avec des char * c dès le début mais j'ai tjrs eu des segfault dans fread (je maitrise pas) quelque soit l'argument que je lui passe (c, &c, *c; ...).
Sauriez-vous m'aider ?
Merci d'avance