2008-10-24 7 views
1

Je me demandais si quelqu'un avait déjà rencontré celui-ci. J'ai un client qui utilise des caractères spéciaux dans leur champ de description de produit. La mise à jour vers une base de données MySQL fonctionne bien si nous utilisons leurs équivalents HTML mais elle échoue si le caractère lui-même est utilisé (copié à partir de la carte de caractères ou de Word je suppose).Erreur de mise à jour de MySQL lorsque des caractères spéciaux sont utilisés

Quelqu'un at-il déjà vu ce comportement? Le personnage en question dans ce cas est & oslash; - et nous ne pouvons pas sembler faire un remplacement dessus (dans ASP au moins) car le caractère vient à la chaîne SQL comme un "?".

Toutes les suggestions très appréciées - merci!

Répondre

0

Avez-vous essayé de définir le classement pour la table à utf-8 ou quelque chose non latin1/ascii.

2

Ceci suggère un caractère entre votre origines différentes base de données (connexion) et des données réelles.

Très probablement, vous utilisez ISO-8859-1 sur votre site, mais MySQL pense qu'il devrait obtenir UTF-8.

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html décrit ce qu'il faut vérifier et comment le changer. Le moyen le plus simple est probablement d'exécuter la requête "SET NAMES latin1" lors de la connexion à la base de données (en supposant que c'est le jeu de caractères dont vous avez besoin).

Être fan d'Unicode, je vous suggère de passer vers UTF-8 tout à fait, mais je me rends compte que ce n'est pas toujours une option possible.

Edit: @markokocic: Collation dicte que l'ordre de tri. Bien que cela devrait bien sûr correspondre à votre jeu de caractères, cela n'affecte pas la gamme de caractères qui peuvent être stockés dans un champ.

+0

Merci pour les pointeurs. Le client, la connexion et les résultats sont définis comme UTF-8, la base de données et le serveur sont définis comme latin1. Ai-je raison de supposer que la base de données et le serveur doivent également être en UTF-8? – Katy

+0

Si vous allez Unicode, alors oui. Le site doit également se déclarer comme UTF-8, et tout texte statique devra correspondre à cela. Si vous ne le faites pas, laissez-les et changez la connexion à la place. Vous pouvez le faire en envoyant la requête SET NAMES lorsque vous l'ouvrez ou en modifiant vos fichiers de configuration en conséquence. –

Questions connexes