2010-11-02 30 views
1

J'ai un simple site web de panier qui utilise une base de données MySQL pour stocker les produits. Il y a des MILLIERS de produits, et par conséquent ces éléments peuvent être gérés aussi bien à partir d'une interface web qu'en générant un fichier TSV, en téléchargeant, éditant et re-téléchargeant qui ensuite analyse le fichier CSV maintenant modifié, apportant les changements corrects comme ça va. Maintenant, vous pouvez imaginer les cauchemars auxquels j'ai été confronté en termes de codage de caractères etc. Ma question est la suivante: existe-t-il une pratique courante, un moyen efficace pour encoder - stocker - récupérer - des données Unencode pour CSV, MySQL et Plate-forme Web?Pratique/méthode commune pour encoder et dé-coder des données qui passe de CSV à MySQL table à Web

Je constate que les admins peuvent entrer une certaine description dans le CSV qui est simplement copié et collé de quelque part. Cette description peut contenir des caractères spéciaux tels que des symboles de droits d'auteur et de marques de commerce, et même des caractères mathématiques «puissance» et «quadrature». Quelle serait la meilleure méthode pour s'assurer que ces caractères spéciaux sont conservés intacts dans la base de données et peuvent également être affichés sur le site Web sans soucis, et lorsqu'ils sont téléchargés en tant que fichier TSV, ils sont à nouveau codés dans un format Excel (R) affichera comme caractère spécial et non comme un code de caractère.

Comme toujours, toute rétroaction/guidage est toujours appréciée.

Merci

Répondre

1

Utilisez simplement UTF-8 dans toutes les étapes du processus (avec un BOM UTF-8 lors de la génération du CSV de sorte que Windows obtient) et vous n'aurez aucun problème.

Donnez à vos fichiers html et/ou en-têtes de serveur un encodage UTF-8 et vos tables un encodage UTF-8 et tout devrait fonctionner sans problème.

+0

Nous vous remercions de votre aide. J'avais le sentiment que peut-être UTF8 était le chemin à parcourir. Donc, si toutes mes pages ont un en-tête UTF-8, n'aurai-je pas besoin d'encoder les données CSV dans htmlentities() lors de l'ajout à la base de données? Je suppose que si mon en-tête de page a le jeu de caractères UTF-8, il n'y aura pas besoin d'encoder en caractères html? – SimonDowdles

+0

@webfac: En supposant que les caractères que vous utilisez sont dans le jeu de caractères UTF8, vous n'aurez pas besoin de 'htmlentities()'. L'encodage n'est nécessaire que si les caractères ne sont pas pris en charge par votre jeu de caractères. Donc, pour être sûr, vous pouvez toujours utiliser 'htmlentities()' mais l'appeler avec charset 'UTF-8' comme ceci:' htmlentities ($ string, ENT_COMPAT, 'UTF-8'); ' – Wolph

+0

Donc quand j'insère les données dans les tables j'utilise les htmlentities ($ string, ENT_COMPAT, 'UTF-8') et comment puis-je récupérer ces caractères en UTF-8 pour les lire dans Excel? Ou est-ce là où htmlentities_decode() entre en jeu? – SimonDowdles