将数据插入mysql时出现PHP charset问题

Mar*_*arc 1 php mysql character-encoding

我有一个PHP文件,在我的数据库中插入$ mail和$ password.见下面的代码.我的php文件,我的BD和我的表字段都在utf-8中.所以我不明白为什么我发送"Philémon"的邮件在我的桌子中以"Philémon"的形式出现.顺便说一下,我知道它不是邮件格式.这只是为了测试.

我的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')");
?>
Run Code Online (Sandbox Code Playgroud)

Pek*_*ica 5

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

解决方案:做一个

 mysql_set_charset('utf8'); 
Run Code Online (Sandbox Code Playgroud)

在发送数据之前; 如果该功能不可用,请使用

mysql_query("SET NAMES utf8;");
Run Code Online (Sandbox Code Playgroud)