php向mysql中写入中文数据的问题

 先放php代码


   
   
 
其中有几个问题
1. host的值,原来在windows环境下的时候,用的是“localhost”,但在mac环境下,发现使用“localhost”会有问题,而使用“127.0.0.1”则可以成功。

2. mysql中存储中文的问题
一开始的时候,在终端模式下直接输入命令 
insert into tb_user(name,password,phoneno,gender) values('博客航母','25d55ad283aa400af464c76d713c07ad','13812345678',1);
显示query ok,再输入命令“select * from tb_user;",可以看到中文显示成功;
然而,通过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
打印了”注册成功“,但读取数据库中内容之后,发现name字段是乱码,

之后,开始百度模式,先是在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编码可以支持最多的语言。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值