2009-08-23 15 views
2

par exemple lorsque je récupère de la base de données le mot programme au lieu du programme ce qui serait montré est programme. 'et - passe à . Comment puis-je réparer cela?sorties php au lieu de -

Répondre

0

Vous traitez cp-1252 comme iso-8859-1. A very common mistake. Utilisez utf-8, qui est standardisé, ou validez l'entrée pour vous assurer que l'utilisateur vous donne une iso-8859-1 valide, lorsqu'il le dit. Dans les cas où vous ne le faites pas (par exemple vous obtenez cp-1252), vous pouvez translittérer l'entrée à iso-8859-1.

5

Vos données sont stockées en tant que UTF-8? Essayez d'exécuter ces requêtes avant d'extraire les données:

SET NAMES utf8 
SET CHARACTER SET utf8 

Assurez-vous également que vous configurez votre page encoding:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" /> 
8

Le caractère de remplacement (U + FFFD) signifie que vos données ne sont pas correctement codé. Vous déclarez probablement votre sortie comme UTF-8 mais vos données de base de données ne sont pas encodées en UTF-8. Vous devez donc convertir les données en UTF-8. Vous pouvez utiliser mb_convert_encoding pour ce faire.

0

Cela ressemble à un problème de jeu de caractères, votre base de données et votre page Web doivent utiliser le même jeu de caractères (ou vous devez convertir entre eux). Découvrez this article de Joel on Software. Cette apostrophe semblerait être une apostrophe bouclée, et ma suspicion est que le tiret est un em dash ou similaire.

0

pourrait être causée par l'utilisation de différents caractères, par exemple, la maison de Marc et la maison de Marc, généralement je reçois ce caractère de MS Word et d'autres traitements de texte, ennuyeux

Edit: Whops, je vois auto débordement de pile corrige le caractère ... mon point étant, les processeurs de mots créent des caractères différents lorsque vous appuyez sur le bouton apostrophe

4

Ceci est un problème de codage de caractères: quelque part le long de la ligne, le codage de caractères est mal interprété. Voici les zones que vous devez vérifier, en travaillant essentiellement en arrière depuis la sortie de cette page:

Lorsque vous générez la page, vous devez inclure un en-tête de type de contenu approprié, soit à partir du serveur (de préférence), soit dans HTML:

<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 

lorsque vous vous connectez à la base de données, vous devriez émettez une requête SET NAMES qui indique la base de données que le codage à utiliser lors de l'envoi de données à votre script (notez que cela n'a rien à voir avec ce que l'encodage de votre tables utilisent).

SET NAMES utf8; 

Vos tableaux eux-mêmes doivent être définies comme le codage de caractères « droit »:

CREATE TABLE foo (...) CHARSET=utf8; 

Si vous avez déjà créé les tables à l'aide latin1 et souhaitez les convertir, vous aurez à pas seulement émettre un ALTER TABLE pour changer le CHARSET mais aussi changer le CHARSET pour chaque colonne textuelle (TEXT, CHAR, VARCHAR).

Si tout cela semble correct, le problème est peut-être survenu "sur le chemin". En d'autres termes, en supposant que vous ayez un autre formulaire qui soumette ces données à la base de données, vous devez également mettre à jour ce formulaire (Content-Type et SET NAMES).

Questions connexes