Accents incompatibles Mac et PC

cs_hamilton Messages postés 2 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 6 octobre 2003 - 3 oct. 2003 à 18:19
Magicking Messages postés 195 Date d'inscription vendredi 13 octobre 2000 Statut Membre Dernière intervention 8 juillet 2004 - 6 oct. 2003 à 18:48
Bonjour,

J'un problème tenace à résoudre (en tout cas pour moi) avec des accents. Une page php fonctionne comme ceci :
- Elle génère un fichier texte à la volée d'après des données piochées dans une base mysql, ce fichier est enregistré le site.
- Un lien vers ce fichier permet ensuite de l'afficher ou de l'enregistrer sur le disque dur.

-> Sur PC, aucun problème
-> Sur Mac, les caractères accentués (codes ASCII>128 je suppose) sont transformés : par exemple le é devient È.

J'ai essayé d'utiliser les fonction utf, mais aussi la fonction convert_cyr_string dans tous les sens, qui normalement convertit un jeu de caractères mac en PC et inversement, sans résultat.

-> Ai-je mal utilisé ces fonctions, y-a-t il une fonction que je ne connais pas ?
-> Y a-t-il une manière particulière de créer le fichier (avec des entêtes iso ou autres) pour éviter ce problème ?

Merci d'avance !

3 réponses

Magicking Messages postés 195 Date d'inscription vendredi 13 octobre 2000 Statut Membre Dernière intervention 8 juillet 2004
3 oct. 2003 à 19:45
Je suis moi-même sur MAC et PC et le probleme d'accent se pose souvent peut-etre en utilisant la table de translations que je pense que tu peux trouver sur internet et un str_replace(avec un array)
0
cs_hamilton Messages postés 2 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 6 octobre 2003
6 oct. 2003 à 11:22
Ca fait un bout de temps que je cherche. Je crois effectivement que je vais finir par faire une table de translation. Voilà mon idée :
- J'exporte la table ASCII complète (255 caractères) sur Mac
- Je reviens sur PC. Je lis cette table exportée et la mets dans un tableau. le é dans ce tableau est par exemple le 187e élement (code ASCII 187). Dans la vraie table ASCII PC, c'est par exemple le "ç"
Je crée une fonction corresp() qui consulte le tableau et trouve le caractère entré en paramètre. Par exemple, corresp("é") renvoie 187.
Il ne reste plus qu'à détecter à la volée si l'utilisateur est sur PC ou sur Mac.
Sur PC, on envoie la chaîne normale
Sur Mac, on applique la transformation "convert" à la chaîne de caractères. à la place de "é", il mettra "ç", mais on sait que sur Mac le "ç" se transforme ensuite en "é", et c'est ce qu'on veut.
0
Magicking Messages postés 195 Date d'inscription vendredi 13 octobre 2000 Statut Membre Dernière intervention 8 juillet 2004
6 oct. 2003 à 18:48
A mon avis tu peux essayer de regarder dans les sources de certain forum comme Ipb ou phpBB2 car je pense qu'il doit y avoir ce genre de chose dedans
0
Rejoignez-nous