utf 8-PHP et MySQLi UTF8
mon jeu de caractères de table est utf8 et il est collation est utf8.maintenant, j'ai ce code:
$mysqli = new mysqli("localhost", "root", "", "Amoozeshgah");
if (mysqli_connect_errno()) {
printf("Connect failed: %sn", mysqli_connect_error());
}
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %sn", $mysqli->error);
} else {
printf("Current character set: %sn", $mysqli->character_set_name());
}
mysql_set_charset('utf8');
if ($stmt = $mysqli->prepare("SELECT About_Title FROM Tbl_About WHERE About_Id=?")) {
$city = 8;
/* bind parameters for markers */
$stmt->bind_param("s", $city);
/* execute query */
$stmt->execute();
/* bind result variables */
$result = $stmt->get_result();
/* fetch value */
while ($myrow = $result->fetch_assoc()) {
// use your $myrow array as you would with any other fetch
printf("%s is in district %sn", $city, $myrow['About_Title']);
print("shod");
}
mais mettre est:
Current character set: utf8 8 is in district نتمنتشس shod
que puis-je faire? Modifier: j'ai remplacé:
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %sn", $mysqli->error);
} else {
printf("Current character set: %sn", $mysqli->character_set_name());
}
mysql_set_charset('utf8');
$mysqli->set_charset("utf8")
mais pas de différence.
5 réponses
remplacez mysql_set_charset('utf8');
$mysqli->set_charset("utf8")
: -)
or mysqli_set_charset($this->mysqli,"utf8");
mysqli_set_charset($conn,"utf8");
scénario Intéressant qui peut aider quelqu'un d'autre. Pas de détails techniques / explication et à la place juste une poussée / indice dans la bonne direction.
Le scénario: création automatisée à distance d'un compte utilisateur basé sur une transaction PayPal IPN réussie/vérifiée. Mysqli requête crée utilisateur et usermeta données, mais la valeur de ces données contient des caractères de formatage cachés et invalide l'utilisation de ces données appelé dans le traitement de formulaire. Solution très simple sans changer / modifier toutes les tables de PD existantes. Fondamentalement, cela garantit que vos données ne sont que des caractères imprimables ASCII et même en utilisant $mysqli- > set_charset ("utf8"); n'est pas vraiment important puisque vous préparez vos données pour être traitées et saisies"ASCII clean".
$create_ipn = $mysqli->prepare("INSERT INTO xxx_somewhere (some_ipn_parameter , email, domain, item) VALUES (?, ?, ?, ?)");
$create_ipn->bind_param("ssss", $some_ipn_parameter, $email, $domain, $item);
$some_ipn_parameter = preg_replace( '/[^\x01-\x7F]/', "", 'the_actual_ipn_data' );
$email = 'edward@ait-pro.com';
$domain = '';
$item = 'Test';
$create_ipn->execute();
lorsque vous récupérez des données à partir de la base de données, vous n'obtenez pas seulement les données correctement, mais vous avez aussi besoin de les afficher correctement sur les pages, alors essayez D'utiliser L'encodage UTF-8 dans votre en-tête de page:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
dans votre fichier php ajouter ce qui suit en haut de votre code
header('Content-Type: text/plain; charset=utf-8');