2012-09-12 16 views
9

PHPでMySQLテーブルに♥を挿入しようとしています。これは入力フィールドから来ます。MySQLテーブルに♥文字を挿入できません

テーブルの文字セットはutf8_general_ciであり、PHPでは接続直後にmysql_query("SET NAMES 'utf8'");を使用します。

しかし、♥は「?」になります。挿入されたとき。

私はまた、phpMyAdminのからテーブルへ♥を挿入しようとしたが、それは、このエラーを返します:「?」

Warning: #1366 Incorrect string value: '\xE2\x99\xA5' for column 'subject' at row 1 

結果もあります♥の代わりに。

これを引き起こす原因は何ですか?

+5

[WebアプリケーションでUnicodeフロントを処理する](http://kunststube.net/frontback/) – deceze

+0

try http://stackoverflow.com/questions/7781103/sql-server-set-文字セット非照合 – Sathish

答えて

23

これは、テーブルの列に互換性のないcharacter set and collationが定義されているためです。

テーブルまたは列のchanging character setUTF8にお試しください。あなたのphpファイルで

ini_set('default_charset', 'utf-8'); 

をして設定します:

​​

または

ALTER TABLE table_name MODIFY col VARCHAR(255) CHARACTER SET utf8; 
+0

ああ!私はちょうど列ではなくテーブルの文字セットを変更しました...列をutf8に変更しました。ありがとう! – Elias

+0

あなたは大歓迎です! :) – Omesh

0

これを試してみ照合のためにあなたのデータベースを

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

とチェクをutf8_general_ci

+0

default_charsetとメタタグは機能しませんでした。私は '?' phpMyAdminで – Elias

+0

よりini_set()で文字エンコーディングを設定しようとするよりも、 –

関連する問題