>  기사  >  백엔드 개발  >  PHP mysql在ubuntu环境下的编码问题

PHP mysql在ubuntu环境下的编码问题

WBOY
WBOY원래의
2016-06-06 20:14:451069검색

php每次链接数据库时都要执行一次mysql_query("SET NAMES 'utf8'",$conn);
有没有什么方法可以设置php连数据库默认的编码方式?

回复内容:

php每次链接数据库时都要执行一次mysql_query("SET NAMES 'utf8'",$conn);
有没有什么方法可以设置php连数据库默认的编码方式?

不建议你轻易尝试上面提到的方法。SET NAMES 'utf8'不是设置mysql的字符集,而是连接校对的字符集。
这表示你当前连接使用的客户端的数据的编码方式(对浏览器来说就是charset=uft-8),和php程序的源码格式、mysql的数据库编码格式完全无关。
比如说你的网页是gbk编码的,那么通过你的网页提交的数据存入mysql的时候应该指明SET NAMES 'GBK'。

连接校对的作用:是为了保持客户端与mysql之间数据编码的一致性。事实上连接校对字符集指定错误不会影响客户端自己,但是会影响第三方。

客户端1内容是GBK编码,连接校对是 utf-8,mysql使用的字符集是latin-1,那么会先按照utf-8解码,然后再用latin-1编码,保存。对于客户端1来说,读数据就是该过程的反向,数据不出会出现异常。
然而客户端2内容是utf-8编码,连接校对是utf-8,此时它在读取客户端1写入的数据后就乱码了,同样客户端1读取客户端2写入的内容也是乱码的。但是他们读取自己写入的内容则都没有问题。
而是用mysql命令行则会发现,客户端1写入的数据由于编码异常显示为乱码,而客户端2写入的数据是正常的。

这个和php无关。你需要设置MySQL的默认编码,修改my.ini配置文件中

在php中设置默认编码utf-8, 搜索default-charset,并设置为utf8应该就行了

mysql里有4,5种编码,去配置下

PHP&MySQL与UTF8终极处理方案

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.