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.

17
demandé sur Mahdi_Nine 2012-04-26 14:48:41

5 réponses

remplacez mysql_set_charset('utf8');$mysqli->set_charset("utf8"): -)

47
répondu Rohit Kumar Choudhary 2012-04-26 11:03:53
or mysqli_set_charset($this->mysqli,"utf8");
mysqli_set_charset($conn,"utf8");
17
répondu Rinzler 2014-02-12 12:33:49

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();         
0
répondu Ed-AITpro 2015-10-20 22:21:00

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">

0
répondu wbswjc 2016-10-21 03:31:14

dans votre fichier php ajouter ce qui suit en haut de votre code

header('Content-Type: text/plain; charset=utf-8');
-1
répondu karrar kazuya 2018-07-02 08:41:35