des points d'interrogation

des points d'interrogation - SQL/NoSQL - Programmation

Marsh Posté le 01-11-2006 à 19:39:12    

Bonjour,
 
j'avais une bdd chez Free.
Et il y a quelques mois, des points d'interrogation ont remplacés certains caractères comme les '.
 
Qqun sait ce qui c'est passé ? Je n'ai pas touché à ces enregistrements.
 
A mon avis, ca vient de la table de caractères.
 
J'ai pu corriger cela (enregistrement par enregistrement) en remplaçant le ? par le bon caractère.


Message édité par shawn8 le 06-11-2006 à 07:37:18
Reply

Marsh Posté le 01-11-2006 à 19:39:12   

Reply

Marsh Posté le 01-11-2006 à 20:07:37    

Problème d'encodage: si les ' se transforment en ?, c'est que tu est certainnement en train de lire des données encodées Windows, en UTF8 ou en ISO.
Change l'encodage par défaut de la BDD, mais ça va pas être évident maintenant que tu as trifouillé à la main.
Si tu as un problème pour changer l'encodage, quelle BDD utilise-tu?

Reply

Marsh Posté le 06-11-2006 à 07:42:53    

(Nargy : j'ai préféré muter du salon PHP au salon SGBD pour ne pas déranger les PHPnautes)
 
Sous Free, j'utilise MySQL (iso-8859-1).
 
voilà ce que j'ai lu sur un site : (http://rym.waglo.com/wordpress/2006/03/15/encodage-de-caracteres-iso-8859-1-et-utf-8-dans-wordpress/)
mais si tu as des tables qui contiennent des données en encodages mélangés, il devrait être facile de les corriger en utilisant la fonction PHP mb_convert_encoding qui est capable de détecter l’encodage initial. L’extension PHP mbstring doit être présente.
 
Un petit exemple… (non testé, et je ne connais pas la DB de Wordpress donc la requête est incorrecte)
 
$sSql = "SELECT id,body FROM entries";
$oRs = @mysql_query($sSql) or die("Query error: ".mysql_error());
 
while ($aRow = mysql_fetch_array($oRs)) {
  $sBodyUTF8 = mb_convert_encoding($aRow["body"],"utf-8","utf-8, iso-8859-1" );
  if ($oRs["body"] != $sBodyUTF8) {
    $sSql = "UPDATE entries SET body='".mysql_escape_string($sBodyUTF8)."' WHERE id=".$oRs["id"];
    @mysql_query($sSql) or die("Query error: ".mysql_error());
  }
}
 
mysql_free_result($oRs);
 
 
Vous me conseillez de procéder comment ?
Je demande d'utiliser UTF8 pour ma base ?
Et vu que j'ai modifié à la main, je remodifie à la main les erreurs ?

Reply

Marsh Posté le 08-11-2006 à 12:38:49    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed