日期:2014-05-17  浏览次数:20542 次

期待大家帮忙,牛X你就来,PHP插入mysql乱码,都设置了,还是不行
PHP插入到mysql中的数据从终端到phpmyadmin浏览都是乱码,大家帮忙分析
环境:LAMP

1.mysql编码设置如下:

mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 | 
| character_set_connection | utf8 | 
| character_set_database | utf8 | 
| character_set_filesystem | binary | 
| character_set_results | utf8 | 
| character_set_server | utf8 | 
| character_set_system | utf8 | 
| character_sets_dir | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

2. mysql 全局设置如下:
/etc/my.cnf

[client]
default-character-set='utf8'

[mysqld]
default-character-set='utf8'
3.PHP连接编码设置如下:


function db_connect()
{

$result=new mysqli('IP','db','user','passwd');
mysql_query("SET NAMES 'UTF8'");

4. PHP页面编码设置如下:

<meta http-equiv="Content-Type" content="text/html; charset=utf8">

能设置的都设置了,为什么在phpmyadmin 与终端里浏览还是乱码!!!!!
PS: phpmyadmin 与终端里也设置了编码为UTF8

哪位朋友帮忙解决一下。成分感谢!



------解决方案--------------------
mysql在设置utf8的时候, 使用"utf8", 页面上, 使用utf-8.

乱码的解决需要一步一步的调试/观察

首先, 查看你的页面编码, 在浏览器上看打开你的页面时浏览器使用的编码格式..
然后, 从$_POST, $_GET中打印你提交的数据, 检查前台向后台的传递过程中, 编码有没有出问题
然后, 在向数据库写入之前检查一下..
然后就是确定数据库的编码问题, 这个通常换个确认正确的客户端来向数据库写入, 看数据库的表现..
------解决方案--------------------
页面是UTF-8
MYSQL里是UTF8
注意不要搞错。
另外,网页其实可以不设,只要程序的编码是UTF-8即可。
------解决方案--------------------
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
然后再用 EditPlus 3另存为utf-8类型.

mysql连接那里:mysql_query('set names utf8');


------解决方案--------------------
探讨
谢谢大家的帮助,我用的mysqli连接数据库,用 mysqli 的时候 mysql_query("SET NAMES 'UTF8'");不知道为什么没有起作用,用以下的没有问题了
$result=new mysqli('localhost','root','','db');
$result->query("set names 'utf8'");

麻烦朋友们解答一下 $result->qu……

------解决方案--------------------
探讨

一: 所有的utf8都换成utf-8

二:mysql_query("SET NAMES 'UTF8'");改成:mysql_query("SET NAMES `UTF-8`");
注意标点符号,是反引号 不是单引号