ScotlandPHP 2016

mysqli::set_charset

mysqli_set_charset

(PHP 5 >= 5.0.5, PHP 7)

mysqli::set_charset -- mysqli_set_charsetЗадает набор символов по умолчанию

Описание

Объектно-ориентированный стиль

bool mysqli::set_charset ( string $charset )

Процедурный стиль

bool mysqli_set_charset ( mysqli $link , string $charset )

Задает набор символов по умолчанию, который будет использоваться при обмене данными с сервером баз данных.

Список параметров

link

Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()

charset

Набор символов, который необходимо установить.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примечания

Замечание:

Чтобы использовать эту функцию на Windows платформах, вам потребуется клиентская библиотека MySQL версии 4.1.11 или выше (для MySQL 5.0 соответственно 5.0.6 или выше).

Замечание:

Это предпочтительный способ задания набора символов. Использование для этих целей функции mysqli_query() (например SET NAMES utf8) не рекомендуется. Дополнительно см. Наборы символов в MySQL.

Примеры

Пример #1 Пример использования mysqli::set_charset()

Объектно-ориентированный стиль

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

/* проверка соединения */
if (mysqli_connect_errno()) {
    
printf("Не удалось подключиться: %s\n"mysqli_connect_error());
    exit();
}

/* изменение набора символов на utf8 */
if (!$mysqli->set_charset("utf8")) {
    
printf("Ошибка при загрузке набора символов utf8: %s\n"$mysqli->error);
} else {
    
printf("Текущий набор символов: %s\n"$mysqli->character_set_name());
}

$mysqli->close();
?>

Процедурный стиль

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

/* проверка соединения */
if (mysqli_connect_errno()) {
    
printf("Не удалось подключиться: %s\n"mysqli_connect_error());
    exit();
}

/* изменение набора символов на utf8 */
if (!mysqli_set_charset($link"utf8")) {
    
printf("Ошибка при загрузке набора символов utf8: %s\n"mysqli_error($link));
} else {
    
printf("Текущий набор символов: %s\n"mysqli_character_set_name($link));
}

mysqli_close($link);
?>

Результат выполнения данных примеров:

Текущий набор символов: utf8

Смотрите также

add a note add a note

User Contributed Notes 2 notes

up
2
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
1
Emmanuel Appiah
5 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