PHP 7.1.0 Released

mysqli::set_charset

mysqli_set_charset

(PHP 5 >= 5.0.5, PHP 7)

mysqli::set_charset -- mysqli_set_charsetDéfinit le jeu de caractères par défaut du client

Description

Style orienté objet

bool mysqli::set_charset ( string $charset )

Style procédural

bool mysqli_set_charset ( mysqli $link , string $charset )

Définit le jeu de caractères par défaut à utiliser lors de l'envoi de données depuis et vers le serveur de base de données.

Liste de paramètres

link

Seulement en style procédural : Un identifiant de lien retourné par la fonction mysqli_connect() ou par la fonction mysqli_init()

charset

Le jeu de caractères à définir.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Notes

Note:

Pour utiliser cette fonction sur les systèmes Windows, vous devez utiliser la bibliothèque client MySQL version 4.1.11 ou suivante (pour MySQL 5.0, vous avez besoin de la version 5.0.6 ou suivante).

Note:

C'est la meilleure façon de modifier le jeu de caractères. Il n'est pas recommandé d'utiliser la fonction mysqli_query() pour le définir (comme avec la requête SET NAMES utf8). Voir la section Concepts des jeux de caractères MySQL pour plus d'informations.

Exemples

Exemple #1 Exemple avec mysqli::set_charset()

Style orienté objet

<?php
$mysqli 
= new mysqli("localhost""my_user""my_password""test");

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
    
printf("Échec de la connexion : %s\n"mysqli_connect_error());
    exit();
}

printf("Jeu de caractère initial : %s\n"$mysqli->character_set_name());

/* Modification du jeu de résultats en utf8 */
if (!$mysqli->set_charset("utf8")) {
    
printf("Erreur lors du chargement du jeu de caractères utf8 : %s\n"$mysqli->error);
    exit();
} else {
    
printf("Jeu de caractères courant : %s\n"$mysqli->character_set_name());
}

$mysqli->close();
?>

Style procédural

<?php
$link 
mysqli_connect('localhost''my_user''my_password''test');

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
    
printf("Échec de la connexion : %s\n"mysqli_connect_error());
    exit();
}

printf("Jeu de caractère initial : %s\n"mysqli_character_set_name($link));

/* Modification du jeu de résultats en utf8 */
if (!mysqli_set_charset($link"utf8")) {
    
printf("Erreur lors du chargement du jeu de caractères utf8 : %s\n"mysqli_error($link));
    exit();
} else {
    
printf("Jeu de caractères courant : %s\n"mysqli_character_set_name($link));
}

mysqli_close($link);
?>

Les exemples ci-dessus vont afficher quelque chose de similaire à :

Jeu de caractère initial : latin1
Jeu de caractères courant : utf8

Voir aussi

add a note add a note

User Contributed Notes 2 notes

up
1
coder at punkass dot com
10 years ago
On windows, with "stock" PHP 5.1.2, there is no set_charset function at all. One may have to replace php_mysqli.dll, and libmysql.dll with proper versions, which provided by MySQL at http://dev.mysql.com/downloads/connector/php/
up
0
Emmanuel Appiah
8 months ago
So in my case, I had tried changing the collation from utf8mb4_unicode_ci for mysql and had to change it to uft8_general_ci.

Then pasted :

mysqli_set_charset( $con, 'utf8');

right before I did the SELECT command.

This is my code for reading from db :

/*

$DB_SERVER="db_server_name";
$DB_USER_READER="root";
$DB_PASS_READER="passw*rd";
$DB_NAME="db_name";
$DB_PORT="port number";

$SELECT_WHAT="`name_of_column_as_in_your_table`";
$WHICH_TBL="`table_name`";
$ON_WHAT_CONDITION="`id`='7'";

*/

$con = mysqli_connect($DB_SERVER, $DB_USER_READER, $DB_PASS_READER, $DB_NAME, $DB_PORT);//this is the unique connection for the selection
   
    mysqli_set_charset( $con, 'utf8');
   
       
        $slct_stmnt = "SELECT ".$SELECT_WHAT." FROM ".$WHICH_TBL." WHERE ".$ON_WHAT_CONDITION;

    $slct_query = mysqli_query($con, $slct_stmnt);
   
        if ($slct_query==true) {
//Do your stuff here . . .
}

And it worked like a charm. All the best. The above code can work with reading chineese, russian or arabic or any international language from the database's table column holding such data.
To Top