8 に答える
You have to do both of the following:
- Make sure your database encoding and collation is
utf8_general_ci
(both for the field itself and the table as well as the database). Send two commands right after establishing a connection to the database:
mysql_query("SET NAMES utf8;"); mysql_query("SET CHARACTER_SET utf8;");
You aren't mentioning the MySQL version that you are using, but if using 5.0.7 or later, as per the official PHP documentation:
This is the preferred way to change the charset. Using mysql_query() to set it (such as SET NAMES utf8) is not recommended. See the MySQL character set concepts section for more information.
e.g., Assuming that you are using the mysql_query extension.
<?php
$link = mysql_connect('localhost','user1','pass1',TRUE);
mysql_selectdb('db1', $link);
mysql_set_charset('utf8',$link);
?>
Other considerations:
- The files being used should be encoded with UTF-8
- The database, table and field should all be encoded and using the collation
utf8_general_ci
- The PHP headers and HTML headers should also be set to UTF-8
As a side note, The use of mysql_query extension is discouraged. Instead, the MySQLi or PDO_MySQL extension should be used.
See also MySQL: choosing an API guide and related FAQ for more information.
You should use this line:
@mysql_query("SET NAMES 'utf8' ");
See this function:
function _connect($user, $pass, $host)
{
$conn = mysql_connect($host, $user, $pass);
if (!$conn)
return false;
@mysql_query("SET NAMES 'utf8' ");
//more....
}
Your database should be utf8
supported. Try with utf8_general_ci
or utf8_unicode_ci
try this:
@mysql_query("set global character_set_results=utf8");
try to change server and db and table collation
for example
ALTER DATABASE "DBNAME" CHARACTER SET utf8 COLLATE utf8_general_ci;
The following works for me:
mysqli_set_charset($this->connect,'utf8');
mysqli_query($this->connect, "SET NAMES 'utf8'");
mysqli_query($this->connect, 'SET CHARACTER SET utf8');
Moreover, your table must be (utf8_general_ci) in the structure field.
Now PHP and MYSQL support any language. Use this function in database connectivity .
$this->links = mysql_connect(DB_SERVER,DB_SERVER_USERNAME,DB_SERVER_PASSWORD);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8',
character_set_connection = 'utf8', character_set_database = 'utf8',
character_set_server = 'utf8'", $this->links);
MYSQL database table field should be Collation=utf8_general_ci