//数据库连接
$db_con=new mysqli('localhost','root','root','regist');
$db_con->query("SET NAMES 'utf8'");
//我注:不加上上一句,写到库里的汉字就是乱码。
/*这句话的写法见到了两种:
1、$db_con=new mysqli('localhost','root','root','regist');
$db_con->query("SET NAMES 'utf8'");
2、$link=mysql_connect($db_host,$db_user,$db_pass)or die("不能连接到服务器".mysql_error());
mysql_query("set names utf8");
mysql_select_db($db_name,$link); //选择test数据库
*/
下面是引用的内容
来自:http://php.net/manual/en/mysqli.query.php
13-Aug-2004 09:24
Use difference collation/character for connect, result.
You can set the collation before your query.
E.g. want to set the collation to utf8_general_ci
you can send the query "SET NAMES 'utf8'" first
<?php
$mysqli =new mysqli ( 'localhost' , 'root' , 'password' , 'test' );
$mysqli -> query ( "SET NAMES 'utf8'" );
$q = $mysqli -> query ( "select * from test" );
while( $r = $q -> fetch_assoc ()) {
print_r ( $r );
}
?>
There are many variables about character settings.
By running sql command, SHOW VARIABLES LIKE 'char%';
There are some variables control the character usage.
character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server
character_set_system
Also SET NAMES can repalce with one or some settings like SET character_set_results='utf8';