先放php代码
之后,开始百度模式,先是在php中加入一句:
header("Content-Type: text/html;charset=utf-8");
然并卵,这句的作用是将该php文件的编码设置为utf8,但我这本来就是utf8的。
再接着,我怀疑,是不是在url调用时,传入的参数编码有问题,因此,增加了打印参数的语句和打印查询语句,再次url调用:
http://localhost/ydj_bak/user/registeruser.php?username=%E5%8D%B3%E6%97%B6%E7%90%83%E5%A4%B4&password=iuqiqiq&phoneno=18923456789&verifycode=386181&gender=2
结果显示:
username:即时球头
insert into tb_user(name,password,phoneno,gender) values('即时球头','ea33732cb79902ca06d837b4c9c8f320','18923456789',2)
可以看到,传入的参数没有问题,那么问题应该出在函数mysqli_query()上,果然,原来mysqli_query的默认编码不是utf8,那该怎么办呢?
可以将mysqli_query的编码设置为utf8,有两种方式:
1.执行语句set names 'utf8'
即在php代码中加入语句:
mysqli_query($connID,"set names 'utf8'");
2. 在php代码中加入语句:
mysqli_set_charset($connID,'utf8');
再试一下,中文可以成功保存了
最后补充两句,这一切的前提是mysql中的数据库和数据表的编码是UTF8,可以参考这篇文章:
http://www.server110.com/mariadb/201312/3918.html
其实,在mysql中建立的数据库最好默认编码就设置为utf8,utf8编码可以支持最多的语言。