2010-11-08 38 views
1

J'utilise utf8_general_ci, comment les données doivent-elles être stockées? Je veux dire que si j'ai un varchar/texte qui contient des caractères spéciaux comme áéíóúàèìòùçÇÀÉÌÒ, ils sont stockés comme ça ou sont-ils convertis d'une manière ou d'une autre? im faire un CASE/ACCENT INSENSITIVE recherche, mais les gens m'a dit que je n'étais pas properply stocker des données, donc je besoin d'une référencecomment les données utf8_general_ci doivent-elles être stockées?

si confus à ce sujet, même ma ORDER BY ne fonctionne pas parce que les données sont divisées (après i savent comment les données devraient être im magasin va convertir ma base de données, les tables/setnames sont déjà utf8_general_ci/UTF8)

Répondre

1

J'utilise utf8_general_ci, comment les données doivent être stockées?

Il suffit de le stocker correctement. :)

Sérieusement: Vous devez le stocker de sorte que, lorsque vous affichez la base de données codée UTF-8 via une connexion codée UTF-8 dans un programme tel que phpMyAdmin ou HeidiSQL, vous voyez les caractères réels áéíóúàèìòùçÇÀÉÌÒ. Rien de plus.

utf8_general_ci est déjà accent insensible dans ce

á = a 
é = e 

si vous utilisez une clause LIKE columnname LIKE "searchterm" au lieu de columnname = "searchterm", il sera également insensible à la casse.

+0

merci! Maintenant, j'ai besoin de trouver ce qui ne va pas avec ma connexion adodb, j'ai déjà essayé $ db-> execute ("set names 'utf8'"); mais ça ne marche pas ... jusqu'ici je ne peux que le faire quand je prépare la requête en utilisant utf8_decode – braindamage

0

Êtes-vous sûr que les données sont brisées? Lorsque vous le récupérez de la table, tous les accents sont-ils manquants? UTF-8 est un jeu de caractères, utf8_general_ci est un classement. Ils sont différents. Si vous voulez que votre ORDER BY trie correctement, vous pouvez utiliser utf8_unicode_ci à la place. La collation est principalement en référence à la recherche et au tri, pas au stockage.

Pouvez-vous publier votre résultat SHOW CREATE TABLE?

+0

ouais, mon ó était stocké comme ³ ... et dans phpmyadmin je voyais tous ces caractères étranges partout .. im toujours en utilisant MOTEUR = JEU DE CARACTÈRES MYISAM utf8 COLLATE utf8_general_ci ... et tout comme les noms de jeux, j'ai essayé – braindamage

+0

Si vous exécutez la requête SET NAMES UTF8 sur la connexion à la base de données, cela efface généralement. Bien que, vous devez également vous assurer que votre page Web est définie pour rendre en UTF8. Si aucun d'entre eux n'est défini, votre personnage UTF8 affichera 2 caractères. –