2010-11-04 28 views
1

Bonjour à tous! J'ai dans mes enregistrements de la base de données avec des champs de VARCHAR (100) de charset utf-8 général-ci. Lorsque je fais écho à la page Web, elle renvoie de la chaîne et de nombreux symboles carrés. Comment puis-je les supprimer et laisser inly mot. Wthas le problème. Sera un problème avec la recherche? Merci!couper les espaces dans la chaîne unicode

+0

Une meilleure question serait pourquoi ces « symboles carrés » sont là ... ok – Artefacto

+2

. pourquoi ils sont là?) – yozhik

+0

Vous pourriez commencer en montrant la sortie de 'echo bin2hex ($ string); echo $ string; 'et le résultat attendu. Cela pourrait donner une idée. – Artefacto

Répondre

2

est le script codé en UTF8 et vous aussi UTF8 pour la connexion à la base de données? Vous pouvez définir le jeu de caractères de la connexion à l'aide de la requête suivante directement après la connexion

SET NAMES 'UTF8' 
+0

Le jeu de caractères actuel est: latin1 – yozhik

+0

mais pourquoi latin1, quand j'ai défini utf-8 general_ci ???? – yozhik

+0

Les tables et les jeux de caractères de connexion sont deux choses distinctes. Molle dit, exécutez la requête ci-dessus dès que vous vous connectez. – Phil

0

Je voudrais essayer utf8_decode ($ string);

+0

\t \t \t – yozhik

+0

pas. ne fonctionne pas (???? \t? \t 0? \t ???? \t ????? – yozhik

+0

tels symboles il me montre – yozhik

0

Ne pas oublier de définir l'encodage de caractères sur votre page Web

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
+0

Je l'ai ajouté. n'aide pas – yozhik

1

Vous êtes un nerd de PHP et vient de commencer travailler avec PHP et mysql. Afin de travailler les données Unicode, vous devez savoir quelque chose avant de continuer.

d'abord, assurez-vous que vos champs de table sont définies pour utiliser le classement « de utf8_general_ci » pour accepter toutes les langues des jeux de caractères. Bien sûr, vous pouvez utiliser tout autre classement commençant par "utf8_" par exemple si votre base de données n'a besoin que de caractères anglais et persans, vous pouvez choisir "utf8_persian_ci". Deuxièmement: lorsque vous écrivez du code PHP fonctionnant avec MYSQL, vous devez explicitement demander à PHP de transférer vos données uni-code au format utf8 afin qu'elles correspondent au type de données de destination qui est utf8. Cela entraînera le stockage des données du client "tel quel" dans MYSQL.

Si vous n `suivre cette règle MYSQL va stocker vos données UTF8 comme des points d'interrogation.

Afin d'éviter que cela vous arrive seulement besoin d'écrire la ligne suivante avant toute requête dans votre code PHP.

mysql_query("SET NAMES 'UTF8'"); 

Donc, nous devons d'abord nous connecter à la base de données. Deuxièmement, appelez

mysql_query("SET NAMES 'UTF8'"); 

Troisièmement, faire d'autres opérations.