<mysql_change_usermysql_close>
view the version of this page
Last updated: Fri, 18 Feb 2005

mysql_client_encoding

(PHP 4 >= 4.3.0, PHP 5)

mysql_client_encoding -- Returns the name of the character set

Description

string mysql_client_encoding ( [resource link_identifier] )

mysql_client_encoding() returns the default character set name for the current connection.

Example 1. mysql_client_encoding() example

<?php
$link
= mysql_connect('localhost', 'mysql_user', 'mysql_password');
$charset = mysql_client_encoding($link);
printf("current character set is %s\n", $charset);
?>

The above example would produce the following output:

current character set is latin1

See also mysql_real_escape_string()



add a note add a note User Contributed Notes
mysql_client_encoding
romain at dardour dot com
15-May-2006 11:56
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).
zayfod at yahoo dot com
21-Apr-2006 07:57
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+.
不幸 PHP mysql_connect() 不使用MySQL options filesinit-command="SET NAMES utf8"
The only working sollution remains:
只剩下这方法 :
mysql_query("SET NAMES utf8", $conn);

(of course /ext/mysql/php_mysql.c can always be patched ;] )
Wio at psitrax dot de
17-Mar-2006 01:24
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!
vrbcik
28-Nov-2005 01:26
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);
?>
info at jantichy dot cz
31-Dec-2004 06:02
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
black at scene-si dot org
20-Oct-2004 07:04
the above (as it seems to be vaguely indicated in the mysql manual) works only with mysql 4.1+
stian at grytoyr dot net
19-Oct-2004 09:09
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...

<mysql_change_usermysql_close>
 Last updated: Fri, 18 Feb 2005
show source | credits | sitemap | contact | advertising | mirror sites 
  This mirror generously provided by: National Taiwan University
Last updated: Wed May 24 18:19:15 2006 CST