2010-11-04 4 views
0

J'ai un champ VARCHAR dans l'une des tables de ma base de données MySQL. Il a une limite de 200 caractères. Cela fonctionne bien en anglais, mais quand j'entre 200 caractères arabes (UTF-8), seulement 110 caractères sont stockés.Problème de limite de caractères MySQL

Une idée de ce qui se passe et comment je peux le résoudre?

+0

http://stackoverflow.com/questions/1997540/mysql-varchar-lengths-and-utf-8 –

Répondre

0

Merci beaucoup les gars, j'ai appris beaucoup de vos réponses. Cependant, j'ai trouvé que ce qui causait le problème n'est pas MySQL, mais PHP. La fonction de sous-chaîne pour PHP ne joue pas bien avec les chaînes en arabe, et les coupe tôt, donc j'ai juste dû l'enlever.

+0

Pouvez-vous publier le lien vers PHP bugtracker ou un autre article décrivant ce problème? –

0

Cela peut être dû au fait que la connexion ou les jeux de caractères du client ne sont pas définis correctement.

Émettez SHOW VARIABLES LIKE 'character_set%' et de voir ce que les valeurs de character_set_connection et character_set_client sont. Si elles sont latin1, vous devez vous assurer que vous modifiez votre code pour obtenir de nouvelles connexions pour utiliser UTF-8. Cela peut être réalisé en émettant SET NAMES 'utf8' lorsque vous vous êtes connecté. (Votre classe d'abstraction de base de données peut fournir une méthode pour modifier le jeu de caractères de connexion, auquel cas vous devriez le faire à la place.)

Si c'est effectivement le cas, vous avez peut-être stocké des données erronées dans vos tables. vous voudrez réparer.

0

La façon dont MYSQL fait des clés et regarde UTF-8 est votre problème. Il suppose que tout caractère UTF-8 aura 3 octets (pour les calculs les plus défavorables), donc limitera votre taille sans vraiment expliquer pourquoi. Plus d'infos:

http://www.xaprb.com/blog/2006/04/17/max-key-length-in-mysql/

+0

Comment cela se traduirait-il par le comportement qu'il décrit? – Hammerite

+0

Voici une autre question SO qui traite de ce problème. –

+0

http://stackoverflow.com/questions/1997540/mysql-varchar-lengths-and-utf-8 –