どこでも同じ文字セット (utf-8) を使用していない可能性が高いため、ある時点でデータが台無しになります。正確に何をしているかに応じて、次のポイントの1つ以上を変更/追加する必要があります(おそらくそれはSET CHARSET
/mysql_set_charset
あなたが忘れたものです):
MySQL に utf-8 を使用するように指示します。これを行うには、これを my.cnf に追加します。
collation_server = utf8_unicode_ci
character_set_server = utf8
mysql を操作する前に、次の 2 つのクエリを送信します。
SET NAMES 'utf8';
CHARSET 'utf8';
または、代わりに、接続を開いた後にphpにこれをさせます:
mysql_set_charset('utf8', $conn); // when using the mysql_-functions
mysqli::set_charset('utf8') // when using mysqli
データベースのデフォルトの文字セットとして UTF-8 を設定します
CREATE DATABASE `my_db` DEFAULT CHARACTER SET 'utf8';
テーブルについても同じことを行います。
CREATE TABLE `my_table` (
-- ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
クライアントがブラウザーであると仮定すると、コンテンツを utf-8 および正しいヘッダーとして提供します。
header('Content-type: text/html; charset=utf-8');
ブラウザが確実に理解できるようにするには、メタタグを追加します。
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
最後に、utf-8 を使用してフォームを送信するようブラウザに指示します。
<form accept-charset="utf-8" ...>