欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-28 11:17:52
...
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终极处理方案

相关标签: php mysql