2011-08-09 10 views
1

GETでデータを受信し、データをdbに挿入する小さなスクリプトがあります。私の問題は、いくつかのUTF-8文字を送信するときです。 scritpはそれを受け取りますが、それを奇妙な方法で挿入します。私は自分のページにクエリを表示し、phpmyadminでそれを実行し、そのように動作します。だから、私の問題は、私のスクリプトを介してクエリを実行するときです(私はそれらの文字で定数クエリを実行すると動作しません)。郵便でキャラクターを送っても問題は解決しますか?スクリプトからdbにUTF8文字を挿入するときの問題

ありがとうございました

+0

をあなたはMySQLの接続のためのエンコーディングを指定する必要があります。使用するmysqlの拡張機能に応じて、関数の名前を変更することができます:http://php.net/manual/en/function.mysql-set-charset.php – hakre

+0

詳細を指定してください。 「奇妙な方法で」は役に立たない。理想的には、ターミナルウィンドウからのテキストの切り取りと貼り付けだけでなく、送信または格納されている実際のバイトのヘクスダンプを提供します。 –

+0

この可能な複製の回答[MySQLでの特殊文字の保存方法 - \ [AîA\]](http://stackoverflow.com/questions/6984530/how-to-store-special-charaters-in-mysql-aia )それをよりうまく定式化する。 – hakre

答えて

0

設定全体がUTF-8である必要があります。つまり、Webページ、PHP、データベース接続、およびデータベーステーブルはすべてUTF-8モードでなければなりません。それはスクリプトではなく、管理ページで動作することを考えると、私はそれがあなたのデータベース接続だと思っています。挿入クエリを実行する前にset names='utf-8'を実行して、問題が修正されているかどうか確認してください。そうであれば、あなたのデータベース接続は、他の文字セットを使用していて、PHP->データベースからテキストをマングリングしています。

1

これを試してみてください:

mysql_set_charset('utf8'); 
+1

'SET NAMES'の代わりに' mysql_set_charset() 'をよく使う – hakre

+0

はい、私は同意します... –

+0

mysql_set_charset()の主な利点はより安全であることです。 – Karolis

0

は、クエリの前にPHPファイルでこれを追加します。たとえば

mysql_query('SET NAMES utf8'); 

//DB connection 
$con = mysql_connect('localhost', 'root', '');//db details 
if (!$con){ 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db("mydatabase", $con);//DB name 
mysql_query('SET NAMES utf8'); 
//query 
$sql="SELECT * FROM users WHERE uid=".$user_id;// your query 
$result=mysql_query($sql); 
+1

'SET NAMES'の代わりに' mysql_set_charset() 'を使います。 – hakre

関連する問題