> 백엔드 개발 > PHP 튜토리얼 > 关于PHP操作MYSQL数据库,乱码的有关问题,高手达人们,看看帮忙解决一下

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

WBOY
풀어 주다: 2016-06-13 13:40:34
원래의
901명이 탐색했습니다.

关于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,显示到网页上就成乱码了

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿