PHP插入到mysql中的数据从终端到phpmyadmin浏览都是乱码,大家帮忙分析
环境:LAMP1.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哪位朋友帮忙解决一下。成分感谢!

解决方案 »

  1.   

    我用的是Wamp不太熟悉Lamp,不过你可以试试把utf-8全部换成其他的语言,可能是有些不兼容的存在,不过实在不行可以考虑重新下载配置
      

  2.   

    一: 所有的utf8都换成utf-8二:mysql_query("SET NAMES 'UTF8'");改成:mysql_query("SET NAMES `UTF-8`");
    注意标点符号,是反引号 不是单引号
      

  3.   

    三: 所有php页首都加上:
    header("Content-type: text/html; charset=utf-8");
      

  4.   

    你建立的数据库的编码是utf8_general_ci吗?这种情况有可能你的数据库编码不对!
      

  5.   

    既然 phpmyadmin 都是乱码,可见你以前插入的数据肯定不是utf-8。不要查看以前的数据,按我的方法设置后,新插入数据,然后看新插入的还是不是乱码
      

  6.   

    这种配置却在终端里可以显示
    Database changed
    mysql> select * from zosy_mission;
    +---------+----------------+-----------------+---------------------+--------------------------+-----------------------+---------------------+--------------------+-----------+---------------------+---------------------------+---------------------+---------------------+
    | zosy_id | zosy_applicant | zosy_department | zosy_mission_detail | zosy_mission_type        | zosy_application_time | zosy_finished_time  | zosy_result_detail | zosy_memo | zosy_hardware_model | zosy_actual_working_hours | zosy_mission_status | zosy_add_date       |
    +---------+----------------+-----------------+---------------------+--------------------------+-----------------------+---------------------+--------------------+-----------+---------------------+---------------------------+---------------------+---------------------+
    |      80 |                | 二部          |                     | 计算机及周边硬件 | 0000-00-00 00:00:00   | 0000-00-00 00:00:00 |                    |           |                     |                           | 进行中           | 2011-02-24 16:16:19 | 
    |      79 |                | 二部          |                     | 计算机及周边硬件 | 0000-00-00 00:00:00   | 0000-00-00 00:00:00 |                    |           |                     |                           | 进行中           | 2011-02-24 16:06:21 | 
    |      78 |                | 二部          |                     | 计算机及周边硬件 | 0000-00-00 00:00:00   | 0000-00-00 00:00:00 |                    |           |                     |                           | 进行中           | 2011-02-24 16:01:04 | 
    |      77 |                | 二部          |                     | 计算机及周边硬件 | 0000-00-00 00:00:00   | 0000-00-00 00:00:00 |                    |           |                     |                           | 进行中           | 2011-02-24 15:59:00 | 
    +---------+----------------+-----------------+---------------------+--------------------------+-----------------------+---------------------+--------------------+-----------+---------------------+---------------------------+---------------------+---------------------+
    4 rows in set (0.00 sec)mysql> show variables like 'character_set_%';
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | latin1                     | 
    | character_set_connection | latin1                     | 
    | character_set_database   | latin1                     | 
    | character_set_filesystem | binary                     | 
    | character_set_results    | latin1                     | 
    | character_set_server     | latin1                     | 
    | character_set_system     | utf8                       | 
    | character_sets_dir       | /usr/share/mysql/charsets/ | 
    +--------------------------+----------------------------+
    8 rows in set (0.00 sec)mysql>   
      

  7.   

    mysql> show variables like 'character_set_%';
    为什么两次显示的内容不一样?这样吧  还是用phpmyadmin 浏览,更换浏览器编码浏览,gbk/gb2312/utf-8/latin1等等,直到没有乱码为止,这样就可以知道用什么编码浏览是正常的。
      

  8.   

    mysql> show variables like 'character_set_%';
    为什么两次显示的内容不一样? 这个是因为我把原来mysql的设置改回来后的编码设置情况,这样设置在linux的终端用命令行访问就是正常的。
    我先试试你说的方法。
      

  9.   

    mysql在设置utf8的时候, 使用"utf8", 页面上, 使用utf-8.乱码的解决需要一步一步的调试/观察首先, 查看你的页面编码, 在浏览器上看打开你的页面时浏览器使用的编码格式..
    然后, 从$_POST, $_GET中打印你提交的数据, 检查前台向后台的传递过程中, 编码有没有出问题
    然后, 在向数据库写入之前检查一下..
    然后就是确定数据库的编码问题, 这个通常换个确认正确的客户端来向数据库写入, 看数据库的表现..
      

  10.   

    页面是UTF-8
    MYSQL里是UTF8
    注意不要搞错。
    另外,网页其实可以不设,只要程序的编码是UTF-8即可。
      

  11.   

    你可以先用 select hex(field1) from yourtable 看一下二进制的值,以确认数据库里存的啥
      

  12.   

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    然后再用 EditPlus 3另存为utf-8类型.mysql连接那里:mysql_query('set names utf8');
      

  13.   

    mysql有两个编码,一是效验编码,一是存贮编码,你注意一下
      

  14.   

    谢谢大家的帮助,我用的mysqli连接数据库,用 mysqli 的时候  mysql_query("SET NAMES 'UTF8'");不知道为什么没有起作用,用以下的没有问题了
    $result=new mysqli('localhost','root','','db');
    $result->query("set names 'utf8'");麻烦朋友们解答一下 $result->query("set names 'utf8'");与mysql_query("SET NAMES 'UTF8'");的区别非常感激
      

  15.   

    在CMD里不值观,进PHPMYADMIN打开数据库看看你的结构怎么样的。3者统一指的是文本代码(charset在代码头来设置),数据库编码(phpmyadmin里改),文件本身编码(记事本修改)都为UTF-8或者GBK,如果有一个不是,都必须用编码转换代码修正过来!正常还是推荐都使用UTF-8,这样连编码转换函数都可以丢弃了。
      

  16.   

    注意 用 mysqli 的时候 mysql_query("SET NAMES 'UTF8'");
    你使用了两个函数集,自然也是在操作两个结果集
    得不到正确的结果是正常的
      

  17.   


    有可能是这样的,如果新建的数据库编码是这个,那么有可能在添加新的字段的时候,有些varchar类型的字段编码不是utf8_general_ci,查看一下字段的编码,统一改成utf8_general_ci就可以了
      

  18.   

    mysql_query("SET NAMES 'UTF8'");改成:mysql_query("SET NAMES `UTF-8`"); 这个是错的mysql没有utf-8的编码,请改过来.
      

  19.   

    如果phpmyadmin浏览都是乱码的话,你可以尝试将phpmyadmin的语言切换为英文的utf的试试,我曾经多次遇到这个情况
      

  20.   

    my.ini里面修改成gbk或是你想要的编码格式 重启数据库
    set方法设置字符集不能用引号 
    很久没有搞了,已经搞忘记不清楚了
      

  21.   

    纠正:楼主的是正确的。 向mysql query 设置编码,utf8 非 utf-8;主要的地方有几个,最好都统一编码1,数据库的。
    2,文件里的
    3,mysql_query("SET NAMES `UTF-8`");
    4,文件的内码(估计这个问题,你没有提到这个)