2010-09-04 5 views
3

J'ai trouvé un post similaire à ce sujet mais je ne suis toujours pas sûr. Comme je fais mon livre d'or et ainsi de suite multi-langue j'ai changé le collation en uft8_unicode_ci dans mysql, tout fonctionne comme il se doit, quelque chose que je ne pensais pas était le type que j'utilise, mon livre d'or est multi-langue et pour le champ de nom un utilisateur ne peut pas entrer plus de 50 caractères, même chose pour le sujet et 800 caractères pour le message du livre d'or.Varchar pour UTF-8?

Maintenant, faire cette vérification en PHP est simple. vérifier la longueur de la chaîne en utilisant le mb_ avant strlen etc.

Mais je suis préoccupé par le fait que les données peuvent être tronquées dans mysql. Évidemment, les caractères normaux seront corrects, mais quand il s'agit de caractères chinois et d'autres caractères non standard, c'est évidemment un problème pour moi car je ne sais pas comment varchar les calculera.

+0

Quelle version de mysql utilisez-vous? –

+0

Salut, je cours 5.1.36 dans WAMP (par défaut pour la dernière version de wamp) mais sur mon site où le site Web sera hébergé il est 5.1.48. J'aime aussi utiliser la même version sur testing local et sur l'hôte principal où le site sera hébergé mais WAMP n'a pas d'addon de version MySQL 5.1.48, ils ne vont actuellement que jusqu'à 5.1.41. Merci – PHPLOVER

Répondre

4

Depuis mySQL 4.1, VARCHAR compte en caractères au lieu de octets.

Vous pouvez spécifier un type VARCHAR(255) pour un champ de message qui doit contenir 255 caractères.

+0

Merci Pekka, cet autre message a été supprimé? J'ai essayé de répondre et il a dit qu'il a été supprimé, comme je suis confus comment ils disent que j'ai besoin d'un champ de texte lorsque sur le lien qu'ils ont fourni, il dit que varchar prend en charge jusqu'à 65535 octets. Au moment où j'ai obtenu VARCHAR (800), c'est très déroutant comme je pensais si je voulais dans mon exemple 800 caractères autorisés dans le champ varchar alors je devrais le spécifier comme j'ai VARCHAR (800). Merci – PHPLOVER

+0

@PHPLOVER VARCHAR ne prenait en charge que 255 caractères, mais cela a changé (je pense) avec 4.1. Je ne suis pas sûr de savoir quelle est votre question? Un Varchar (800) devrait fonctionner correctement pour 800 caractères. –

+0

Salut Pekka, la raison pour laquelle je suis confus est que vous avez dit "je peux spécifier un VARCHAR (255)" qui est seulement 255 caractères et mon message de livre d'or est 800 MAX donc si je spécifie 255 les 545 caractères restants seraient tronctués je devrais Imaginez, et étant multilingue je n'étais pas sûr de savoir comment VARCHAR handeled par exemple des caractères chinois comme 1 caractère chinois est égal à 1 octet, je l'ai trouvé confus. Merci – PHPLOVER