PDO-эквивалент mysql_client_encoding ()?

Есть ли способ в PDO проверить кодировку клиента, как это было в mysql / mysqli сmysql_client_encoding();?

На PHP.net говорится, что можно установить кодировку сPDO::setAttribute()Например:

<code>$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
</code>

Но как жеget текущий набор символов?

Ответы на вопрос(1)

Решение Вопроса

кодировка, в которой MySQL предполагает, что строки отправляются клиентом character_set_client); а такж кодировка, в которой MySQL будет отправлять свои ответы character_set_results).

Чтобы определить текущее значение этих переменных с помощью PDO, вы можете получить результаты соответствующегоSHOW VARIABLES заявление; например

$qry = $db->query("SHOW VARIABLES LIKE 'character_set_client'");

Документация дляmysql_client_encoding() является несколько двусмысленным, как говорится:

Возвращаетcharacter_set переменная из MySQL.

Однако такой серверной системной переменной не существует, поэтому я не уверен, что она вернет.

Наконец, вместо того, чтобы устанавливатьMYSQL_ATTR_INIT_COMMAND, вы можете указать желаемый набор символов в DSN (как упоминалось в руководстве):

$db = new PDO("mysql:dbname=$db;host=$host;charset=$charset", $user, $password);
 Joachim11 мая 2012 г., 17:22
Привет, Не уверен, что это возвращение либо. Я знаю, как установить переменную, но я прочитал много мест, где charset = '' игнорируется, и что$db->exec( "SET NAMES 'utf8'");место этого следует использовать @.

Ваш ответ на вопрос