如何使emysql返回utf-8编码的二进制文件

如何使emysql返回utf-8编码的二进制文件,mysql,utf-8,erlang,Mysql,Utf 8,Erlang,我正在使用emysql从mysql数据库获取数据 像这样添加池: emysql:add_pool(my_pool, 1, MysqlUser, MysqlPassword, MysqlHost, PortInt, MysqlDatabase, utf8), emysql_util:as_record(emysql:execute(...)) of prepared语句返回包含二进制文件(数据库中的字符串)的列表或记录。这些二进制文件是latin1编码的,而在数据库中它们是utf-8字符串,

我正在使用
emysql
mysql
数据库获取数据

像这样添加池:

emysql:add_pool(my_pool, 1, MysqlUser, MysqlPassword, MysqlHost, PortInt, MysqlDatabase, utf8),

emysql_util:as_record(emysql:execute(...)) 
of prepared语句返回包含二进制文件(数据库中的字符串)的列表或记录。这些二进制文件是
latin1编码的
,而在数据库中它们是
utf-8
字符串,带有
西里尔字母
符号


有没有办法解决它?

这是最常见的问题之一,您可以尝试使用

erl +pc unicode
这迫使erlang在utf-8上运行

例如,你会看到这个

Eshell V5.10.1  (abort with ^G)  
1> [1024].
"Ѐ"
2> [1070,1085,1080,1082,1086,1076].
"Юникод"
3> [229,228,246].
"åäö"
4> <<208,174,208,189,208,184,208,186,208,190,208,180>>.
<<"Юникод"/utf8>>
5> <<229/utf8,228/utf8,246/utf8>>.
<<"åäö"/utf8>>
Eshell V5.10.1(使用^G中止)
1> [1024].
"Ѐ"
2> [1070,1085,1080,1082,1086,1076].
"Юникод"
3> [229,228,246].
"åäö"
4> .
5> .
另外,我建议你们看看今年在斯德哥尔摩举行的erlang用户大会上发表的“Patrik Nyblom”关于“处理Uniced”的演讲

如果你仔细研究,你会发现许多有用的东西来处理你的问题


祝你好运

这项功能出现在R16中?是的,我认为其中有一些小错误,但如果你不疯狂使用它,它工作得很好,很快就会完成!