PHP mysql在ubuntu环境下的编码问题
有没有什么方法可以设置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终极处理方案
推荐阅读
-
Ubuntu服务器下搭建php运行环境的方法
-
Ubuntu14.04服务器环境下配置PHP7.0+Apache2+Mysql5.7的方法
-
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
-
解决在Linux操作系统下无法连接MySQL服务端的问题
-
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
-
linux系统下将php和mysql命令加入到环境变量中的方法
-
在Windows环境下安装MySQL 的教程图解
-
在ubuntu下mysql的简单操作教程
-
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
-
Linux系统下搭建MantisBT环境以及Apache+PHP+MySql的安装