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哪位朋友帮忙解决一下。成分感谢!
环境: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哪位朋友帮忙解决一下。成分感谢!
注意标点符号,是反引号 不是单引号
header("Content-type: text/html; charset=utf-8");
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>
为什么两次显示的内容不一样?这样吧 还是用phpmyadmin 浏览,更换浏览器编码浏览,gbk/gb2312/utf-8/latin1等等,直到没有乱码为止,这样就可以知道用什么编码浏览是正常的。
为什么两次显示的内容不一样? 这个是因为我把原来mysql的设置改回来后的编码设置情况,这样设置在linux的终端用命令行访问就是正常的。
我先试试你说的方法。
然后, 从$_POST, $_GET中打印你提交的数据, 检查前台向后台的传递过程中, 编码有没有出问题
然后, 在向数据库写入之前检查一下..
然后就是确定数据库的编码问题, 这个通常换个确认正确的客户端来向数据库写入, 看数据库的表现..
MYSQL里是UTF8
注意不要搞错。
另外,网页其实可以不设,只要程序的编码是UTF-8即可。
然后再用 EditPlus 3另存为utf-8类型.mysql连接那里: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'");的区别非常感激
你使用了两个函数集,自然也是在操作两个结果集
得不到正确的结果是正常的
有可能是这样的,如果新建的数据库编码是这个,那么有可能在添加新的字段的时候,有些varchar类型的字段编码不是utf8_general_ci,查看一下字段的编码,统一改成utf8_general_ci就可以了
set方法设置字符集不能用引号
很久没有搞了,已经搞忘记不清楚了
2,文件里的
3,mysql_query("SET NAMES `UTF-8`");
4,文件的内码(估计这个问题,你没有提到这个)