Bluehost で Django を使用しています。ユーザー生成入力用のフォームを作成しましたが、このフォームからの Unicode 入力は、文字の保存または表示に失敗します。そのため、データベースの照合と文字セットを変更する必要があるというSOとGoogle検索を行いました。私はこのSQLを実行します
ALTER DATABASE learncon_pywithyou CHARACTER SET utf8 COLLATE utf8_unicode_ci;
からpython27 manage.py dbshell
、mysql シェルを開始しました。画面に表示されるのは
Query OK, 1 row affected (0.00 sec)
です。
したがって、問題は解決したと思いますが、実際にはそうではありません。Bluehost が提供する phpMyAdmin で後で見つけたので、この SQL は何もしていません。すべてのテーブルのすべての Varchar フィールドは、まだlantin1_swedish_ci
照合されています。
したがって、alter table
代わりに動作するはずです。これをmysqlで実行します
alter table mytable character set utf8 collate utf8_unicode_ci;
画面には が表示されますがQuery OK. 4 rows affected
、実際には何もしませんでした。これらのフィールドの照合mytable
はまったく変更されませんでした。
したがって、最終的にphpMyAdminのフィールドを手動で変更するmytable
と、これが機能し、ユニコードを使用してこのテーブルに挿入できるようになり、正しく表示されるようになりましたが、そのようなテーブルが約20あり、1つずつ変更したくありません手動で 1 つ。
各フィールドの Collate を変更して正しいユニコードを保存および表示する簡単で効果的な方法はありますか?