2012-01-28 7 views
1

データベースに$ mailと$ passwordを挿入するPHPファイルがあります。以下のコードを参照してください。私のPHPファイル、私のBDフィールドと私のテーブルフィールドはutf-8です。だから私が理解できないのは、私が "Philémon"を送るメールが私のテーブルの "Phil?mon"に行く理由です。ところで、私はそれがメール形式ではないことを知っています。それはテストのためです。mysqlにデータを挿入する際にPHPの文字セットの問題が発生する

マイ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

+0

データベース接続がUTF-8を使用していない可能性がありますか?テーブル自体ではなく、DBへの接続。 –

答えて

5

あなたのPHPのソースコードは、おそらくUTF-8でエンコードされます。あなたのデータベース接続はおそらくISO-8859-1でエンコードされています。これは、mySQLのデフォルトの接続エンコーディングです。これにより、UTF-8 éが2つの別々のバイトとして解釈され、その方法でmySQLテーブルに格納されます。

ソリューション:データを送信する前に

mysql_set_charset('utf8'); 

を行います。その機能が利用できない場合は、

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

こんにちはPekka.mysql_set_charset( 'utf8')が問題を解決しました。あなたはロック!私はヘッダー( 'Content-Type:text/html; charset = utf-8')を置く。なぜそれで十分ではないのですか? – Marc

+0

@user番号。そのヘッダーは、出力しようとしている出力をどのように解釈するかを*ブラウザに伝えます。それは他に何の影響もありません –

+0

ヘッダー(blalbla)はページに表示されているものに効果がありますか?正しい? – Marc

関連する問題