ユーザーからのフォームベースの入力を受け入れ、mysql(i) データベースに格納するサイトがあります。ユーザーの 99% はアメリカ出身です。
ユーザーがモバイル デバイスを使用していて、フォーム フィールドの 1 つで絵文字を使用するのが楽しいと判断した場合、UPDATE または INSERT を試行すると、結果の SQL によってエラーが発生します。これは、絵文字が utf-8 の外部にあるためであり、UX と DB の間のエンコーディングの不一致が原因です。根本的な問題を理解していると思います。
私は mysql 5.5 を使用しているので、実際には utf8mb4 文字セットをサポートできますが、それを実現するにはしばらく時間がかかります。
それまでの間、これを(PHPで)行うだけで問題ありませんか/安全ですか?
$sql = "INSERT INTO my_table ... *long insert statement across two dozen rows*";
$sql = utf8_decode($sql);
$db->sql_query($sql);
では、単純に SQL ステートメント全体を強制的に utf-8 にしますか? 絵文字やその他の文字が「?」に変換されることがあります。-- ただし、ステートメント自体が壊れていないか、ユーザーからの通常のテキスト入力が失われない限り、これで問題ありません。
テーブルのスキーマを utf8mb4 で動作するように変換できるようになるまでの一時的な修正として、このアイデアに何か問題はありますか?
編集: データベースから返されるエラーは次のようになります。
"Incorrect string value: '\xF0\x9F\x99\x8A...' for column..."