2010-04-26 6 views
0

J'ai une table de base de données MySQL avec un champ de texte codé ISO-8859-1 contenant les noms d'utilisateur. Quand j'exporte cela dans un fichier texte en utilisant PHP, j'obtiens un fichier texte normal enregistré sur l'ordinateur client. Quand je l'ouvre dans Word ou Excel sur un système Windows, ça a l'air bien. Lorsque je l'ouvre sur Mac en utilisant Word ou Excel, les caractères ASCII élevés sont faux. Je sais que cela est dû au Mac utilisant MacRoman et Windows utilisant ISO-8859-1. Ma question est comment puis-je écrire un fichier texte qui va s'ouvrir sur les deux plates-formes et bien sur les deux?Encodage ISO-8859-1 et MacRoman

Existe-t-il un varian XML que je peux enrouler autour du texte pour indiquer à Word qu'il est codé ISO-8859-1? Quelle poussière magique puis-je saupoudrer sur un fichier TXT pour indiquer à l'os qu'il utilise un autre schéma d'encodage?

Répondre

2

... Je reçois un fichier texte normal enregistré sur l'ordinateur client

Vous obtenez en fait un texte dans un codage spécifique. Supposons que c'est ISO-8859-1.

Je sais que cela est dû au Mac en utilisant MacRoman et Windows en utilisant ISO-8859-1. Ma question est comment puis-je écrire un fichier texte qui va s'ouvrir sur les deux plates-formes et bien sur les deux?

Le logiciel qui ouvre un document texte doit connaître le codage du jeu de caractères. Parfois, il peut le deviner en utilisant des heuristiques, parfois il ne tentera pas de deviner (et d'utiliser sa propre valeur par défaut), parfois vous pouvez lui demander quel encodage utiliser. See here.

Il n'existe pas de méthode générale garantissant que chaque utilisateur l'ouvrira dans le codage correct, tant que nous parlons de fichiers texte purs. Dans certains autres formats (par exemple HTML), l'encodage peut être spécifié comme faisant partie du document lui-même.

+0

Je suppose que je suis à la recherche d'un format de fichier texte 'non pur'. XML, MIME, ect. Un format commun que Word/Excel sur les deux plates-formes lira correctement. Quelque chose avec des informations comme la méta balise charset en HTML. –

+1

Je pense que si vous le convertissez en encodage UTF-8, avec BOM, la plupart des sofwtare le détecteront correctement. Sinon, vous pouvez toujours l'insérer dans une page HTML avec une spécification de jeu de caractères et une balise PRE ... Cela dépend de votre scénario (est-ce un processus automatisé, doit-il être lu par des personnes internes? etc) – leonbloy