我正在尝试使用 Erlang 将来自 iPhone 客户端应用程序的文本(带有表情符号)存储在 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)
还有一个信息,我在 Erlang 上使用准备好的语句,而我不在 C++ 上
任何帮助,将不胜感激。
根据要求,这里是存储数据的查询:
UPDATE Table SET c=? WHERE id=?
真的很简单...