2012-01-28 58 views
1

我有一个PHP文件,它在我的数据库中插入$ mail和$ password。见下面的代码。我的php文件,我的BD和我的表字段都是utf-8。所以我不明白的是,为什么我发送的邮件“Philémon”在我的桌面上显示为“Philémon”。顺便说一下,我知道这不是一种邮件格式。这只是为了测试。将数据插入到mysql时出现PHP charset问题

我的PHP:

<?php 
header('Content-Type: text/html; charset=utf-8'); 
require("php/connect.inc.php"); 

$mail = mysql_real_escape_string("Philémon"); 
$password = sha1("pass123"); 

mysql_query("INSERT INTO ENS_MEMBRES (ENS_MAIL, ENS_PASS) VALUES ('$mail','$password')"); 
?> 
+0

'mail()'使用的编码是什么? – yoda 2012-01-28 18:24:44

+0

您的数据库连接可能不使用UTF-8?不是表格本身,而是与数据库的连接。 – 2012-01-28 18:26:20

回答

5

你的PHP源代码可能是UTF-8编码;你的数据库连接可能是ISO-8859-1编码的,它是mySQL的默认连接编码。这将导致UTF-8 é被解释为两个独立的字节,并以这种方式存储在mySQL表中。

解决方案:在发送数据之前执行一个

mysql_set_charset('utf8'); 

;如果该功能不可用,请使用

mysql_query("SET NAMES utf8;"); 
+0

Hello Pekka.mysql_set_charset('utf8')解决了这个问题。你摇滚!我把头('Content-Type:text/html; charset = utf-8');为什么这是不够的? – Marc 2012-01-28 18:27:56

+0

@用户号码该头文件只是告诉*浏览器*如何解释即将到来的输出;它对其他任何东西都没有影响 – 2012-01-28 18:28:50

+0

所以标题(blalbla)只对页面上显示的内容产生影响?正确? – Marc 2012-01-28 18:30:49