iPhoneクライアントアプリからのテキスト(絵文字付き)をErlangを使用してMySQLデータベースに保存しようとしています。(varchar列に)
私はC++とmysqlppで行われたソケット接続サーバーでそれを行っていました、それはうまく機能していました。(これはまったく同じデータベースであるため、問題はデータベースから発生したものではないと推測できます)
ただし、スケーラビリティの理由からすべてをErlangに渡すことにしました。そのため、絵文字を正しく保存および取得できません。
データベースとの通信にemysqlを使用しています。
保存するときは、このリストをデータベースに送信します。
[240,159,152,130]
私が検索しているとき、ここで私が得るもの:
<<195,176,194,159,194,152,194,130>>
明らかにいくつかの類似点があります。両方の行に159、152、および130が表示されますが、240は表示されません。195、176、および194がどこから来たのかわかりません。
接続プールを作成するときにemysqlエンコーディングを変更することについては考えました。
emysql:add_pool(my_db, 3, "login", "password", "db.mydomain.com", 3306, "MyTable", utf8)
しかし、utf32エンコーディングに適したアトムを見つけることができるようです。(興味深いのは、C ++とmysqlppにエンコーディングを設定していないことです。これは、そのまま使用できます)。
私はいくつかのテストを行いました...
storing from C++, retrieving from C++ (Works fine)
storing from Erlang, retrieving from Erlang (Does not work)
storing from Erlang, retrieving from C++ (Does not work)
storing from C++, retrieving from Erlang (Does not work)
もう1つ、C ++を使用していないのに、Erlangでプリペアドステートメントを使用しています。
どんな助けでもいただければ幸いです。
要求に応じて、ここでデータを保存するためのクエリ:
UPDATE Table SET c=? WHERE id=?
とてもシンプルです...