使用PHP和MySQL进行utf-8编码的字符串问题?

时间:2009-09-03 00:49:39

标签: php mysql encoding utf-8

这是我到目前为止尝试的,通过修改php.ini:     default_charset =“utf-8”

这是MySQL的配置方式:

mysql> show variables like '%char%';
+--------------------------+-----------------------------------------------+
| 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       | f:\wamp\bin\mysql\mysql5.0.45\share\charsets\ |
+--------------------------+-----------------------------------------------+
8 rows in set (0.00 sec)

但它不起作用。

我已经转储了数据,在PHP处理之前和之后都是utf-8格式。

但是在通过PHP插入MySQL后,

它变得很乱(通过phpmyadmin),

插入数据库后,数据变成了这样的东西:

æ±èè<çœæ±Ÿé〜'å¸,å±±è§,镇西è<'æ-°æ'

更糟糕的是,从MySQL读取数据并在页面上显示后,数据再次恢复正常!

有人可以指出这里真正存在的问题吗?

代码就是:

$dml = "insert into profiles(accountId,name,thumbnail,sex,homeAddr,livingAddr,peoples,married,politicalStatus,qq,mobilePhone,telephone,homePage) 
            value($accountId,'{$_POST['name']}',{$_POST['thumbnail']},{$_POST['sex']},'{$_POST['homeAddr']}','{$_POST['livingAddr']}','{$_POST['peoples']}',{$_POST['married']},'{$_POST['politicalStatus']}',{$_POST['qq']},{$_POST['mobilePhone']},{$_POST['telephone']},{$_POST['homePage']})";
mysql_query($dml,$con);

3 个答案:

答案 0 :(得分:1)

在phpMyAdmin中查看php配置中的连接参数。连接到数据库时,可以指定连接的编码(以及所有其他位置)。这可能是不同步的,导致你出现问题。

答案 1 :(得分:0)

请更具体地说明您的问题。发布导致问题的代码,并说明它“如何工作”。没有代码,我们无法解决您的问题。

那就是说,确保你的phpMyAdmin字符集设置得当。我你试图说它在phpMyAdmin中看起来不对,在这种情况下,这很可能是你的问题所在。

编辑: 目前还不清楚“更糟糕的是,从MySQL读取并在页面上显示之后,数据再次变得正常!”装置

你对其他答案的评论并没有真正证明什么。仅仅因为它在phpMyAdmin中看起来正确并不意味着它同意数据库中的内容。您的php字符集需要匹配您的数据库字符集需要以匹配您的phpMyAdmin字符集。如果他们中的任何一个都错了,你会得到这个问题。其中一个不匹配!

答案 2 :(得分:0)

确保HTTP内容类型为utf-8。这是一个棘手的问题。