PHPとMySQLで開発するときに、非常に奇妙な問題に直面しました。私は4-5年前にそのような問題を抱えていましたが、それ以来ではありません。そして、私がそれをどのように解決したかを本当に覚えていません。
ええと...問題:utf_unicode_ciの照合を使用したデータベースがありますが、ジョージア文字を挿入する場合:სახელიდაგვარიデータベースにმიხერ問題は何でしょうか?そしてそれを解決する方法は?
何か案は?
Erayの回答によると、utf8_general_ciは、utf8_unicode_ciではなく照合で設定する必要があることに気付きました。
それに加えて、mysql_set_charset('utf8'、$ connection)関数を使用します。
サンプルは次のとおりです。
$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);
mysql_set_charset('utf8',$connection);
if (!$connection) {
die("Database connection failed: " . mysql_error());
} else {
$db_select = mysql_select_db(DB_NAME, $connection);
if (!$db_select) {
die("Database selection failed: " . mysql_error());
}
}
}
したがって、2行目にmysql_set_charsetを配置すると、問題が解決しました。
それが誰かに役立つことを願っています。
utf8_general_ci
これの代わりに試すことができますか?それはあなたの問題を解決します。
しかし、忘れないでください、*databases* and *tables* collation must be utf8_general_ci
。
私があなたに確信させることができる一つのことは、あなたが経験している問題は照合とは何の関係もないということです。これは文字セットとエンコーディングに関連しており、おそらく問題はデータベースにデータを挿入するときではなく、データを読み取って表示するときに、mysqlのユニコード文字について多くの質問があります。たくさんのヒントと情報。
プレフィックスがNの文字列タイプ(NCHAR、NVARCHAR)のいずれかを使用していることを確認してください。
データを追加するときにデータベースに渡すパラメータにNを追加することを忘れないでください。例えば:
INSERT INTO table VALUES (N'Georgian Letters', N'Georgian Letters', ...)
Nプレフィックスは、SQLに後続の文字列がUnicode文字列であることを通知します。