mysql_client_encoding

(PHP 4 >= 4.3.0, PHP 5)

mysql_client_encodingВозвращает кодировку соединения

Описание

string mysql_client_encoding ([ resource $link_identifier = NULL ] )

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

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

link_identifier

Соединение MySQL. Если идентификатор соединения не был указан, используется последнее соединение, открытое mysql_connect(). Если такое соединение не было найдено, функция попытается создать таковое, как если бы mysql_connect() была вызвана без параметров. Если соединение не было найдено и не смогло быть создано, генерируется ошибка уровня E_WARNING.

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

Возвращает используемую по умолчанию кодировку для данного соединения.

Примеры

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

<?php
$link    
mysql_connect('localhost''mysql_user''mysql_password');
$charset mysql_client_encoding($link);

echo 
"Текущая кодировка: $charset\n";
?>

Результатом выполнения данного примера будет что-то подобное:

Текущая кодировка: latin1

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

  • mysql_set_charset() - Устанавливает кодировку клиента
  • mysql_real_escape_string() - Экранирует специальные символы в строках для использования в выражениях SQL

Коментарии

If you experience weird problems, like some UTF-8 characters (the Unicode character &#x010D and a few others in my case) seemingly being changed to garbage by mysql_query, you may need to do something like this before your actual query:

<?php
mysql_query
("SET NAMES 'utf8'"$conn);
?>

Took me days to figure that one out...
2004-10-19 09:09:06
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
the above (as it seems to be vaguely indicated in the mysql manual) works only with mysql 4.1+
2004-10-20 07:04:54
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
Notice the difference between following two SQL statements:

SET NAMES 'charset_name'
SET CHARACTER SET charset_name

For more detail see
http://dev.mysql.com/doc/mysql/en/Charset-connection.html
2004-12-30 16:02:34
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
Автор:
I have had problems with encoding after export of tables (from hosting - via PhpMyAdmin) and import them to other machine (my notebook - via PhpMyAdmin too). In PhpMyAdmin the encoding of all data was shown correctly, not that good with the web pages (data pulled via php).
The first point is indication, that the data was imported correctly, but php script has got other character set than MySql is sending.

The script's character set is set in header: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2">. MySql setting was latin1.

Then following code helped me:

<?php
mysql_query
("SET CHARACTER SET 'latin2'"$conn);
?>
2005-11-27 11:26:29
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
If you set the encoding in my.cnf like

[mysqld]
init_connect='SET NAMES utf8'

note that the content of init_connect  is not executed for users that have the SUPER privilege - ie root!
2006-03-16 11:24:23
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
The right lines to put in /etc/my.cnf (or other MySQL options file) are:

[client]
init-command="SET NAMES utf8"

Unfortuantely the PHP mysql_connect() function does not use MySQL options files so this is not a sollution for changing the default connection character set for mysqlclient library v4.1+.

The only working sollution remains:

mysql_query("SET NAMES utf8", $conn);

(of course /ext/mysql/php_mysql.c can always be patched ;] )
2006-04-21 07:57:23
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
I couldn't get any luck with all the stuff mentioned below, and despite having an unicode DB, and setting all my field to utf8_general_ci...
After looking around, I found that this page: http://dev.mysql.com/tech-resources/articles/4.1/unicode.html was adding the fields with an extra info before each value:

<?
mysql_query
("INSERT INTO table SET field = _utf8'value'");
?>
Mind the "_utf8" before the field value, and outside of the quotes.

This works for me wether in an Insert or an Update statement.

No need here for a <? mysql_query("SET NAMES utf8"); ?> before each query, or to change anything in the config files (that was important since I don't have access to these).
2006-05-15 11:56:04
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
Автор:
A very easy way to always get results in UTF-8 is to make a common function to connect to DB and in that function set character set to utf-8.

function OpenConn() {
  global $link;
  $link = mysql_connect ("localhost", "username", "password")
      or die(sendError('Could not connect to DB'));
  mysql_select_db ("dbName");
  //
  // Set character set to UTF-8
  //
  mysql_query("SET CHARACTER SET 'utf8'", $link);
}
2006-07-21 08:46:29
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
There's no 'character_set' variable available in MySQL. You can check it yourself in MySQL online documentation or by running MySQL query "SHOW VARIABLES LIKE 'character_set%';".
This must be an error in PHP manual, unless I'm missing something.
2006-07-26 10:13:51
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
Автор:
All I had to do to save utf8 data with php mysql_query() was to go to the php.ini and put default_charset = "utf-8". Without this I had the same problems some of you have. Plus, all my mysql charsets vars are in 'utf8'. (Changed them with Mysql Admin Tool)

Didnt use any mysql SET **** command at all.

Mysql 4.1.20
PHP 4.4.4
Win XP

Hope this help some of you.
2006-09-09 10:30:46
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
f you think "set names utf8" for each connection is too trouble, you can modify my.cnf of MySQL to solve the problem forever. In my.cnf, add the line "default-character-set=utf8" in both [mysqld] and [client] sections:

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8

The MySQL will use utf8 after you restart it.
2007-01-23 07:37:17
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
Please note that even if you set the charset by issuing the two mentioned SQL statements (set names, set character set) mysql_client_encoding still deliveres the old result.

Default for me is latin1. After switching to UTF8 mysql_client_encoding still returns latin1. The charset switched to UTF8 successfully, though.
2007-07-25 09:23:47
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html
I use mysql 3.23 and none of the above worked for me. Looking at http://dev.mysql.com/tech-resources/articles/4.1/unicode.html as advised by romain at dardour dot com, I tried to include the following header in my php scripts, and all the funy characters disapeared. Hope it will help.

<?php header("Content-type: text/html; charset=latin1");?>

(my mysql character was latin1)
2007-08-23 06:30:12
http://php5.kiev.ua/manual/ru/function.mysql-client-encoding.html

    Поддержать сайт на родительском проекте КГБ