Home  >  Article  >  Backend Development  >  关于PHP操作MYSQL数据库,乱码的有关问题,高手达人们,看看帮忙解决一下

关于PHP操作MYSQL数据库,乱码的有关问题,高手达人们,看看帮忙解决一下

WBOY
WBOYOriginal
2016-06-13 13:40:34843browse

关于PHP操作MYSQL数据库,乱码的问题,高手达人们,看看帮忙解决一下
我的情况如下:
我的网页是GB2312编码的,我的数据库的编码是UTF8的,如果我想让数据库里的内容读到网页上,要加上mysql_query("set names gb2312") 这句话,可以解决乱码的问题,这样显示在网页上的就不是乱码了.



但是当我在网页中加入一条插入数据库内容的语句,如果我不加mysql_query("set names gb2312")这句话,他插入数据库的内容是乱码,因为数据库的编码是UTF8,网页中的内容是GB2312编码,所以他显示乱码

但是我加上mysql_query("set names gb2312")这句话后,加入数据库的内容就不会显示乱码

我不明白的是mysql_query("set names gb2312")这句话,可以解决插入到UTF8数据库解决汉字乱码的问题?

mysql_query("set names gb2312")这句话不是设置字符集为GB2312吗?为什么插入UTF8数据库里不会乱码?相反我不加这句话就会显示乱码呢?

高手们帮帮小弟吧

------解决方案--------------------
set names 是用来设置客户端的字符集,与服务端没关系,
set names gb2312 等于是插入之前告诉数据库我是以gb2312的编码进来的,数据库根据进来时的编码来处理它,如果不加这句,数据库就不知道它是以什么编码进来的,这样就出现乱码了

同样道理 查询的时候,用set names gb2312 告诉数据库,我想得到gb2312编码的数据,你给我返回gb2312编码数据吧,数据库就给出gb2312的数据了,如果不加,给出的就是utf-8,显示到网页上就成乱码了

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn