0

我用来从数据库emysql中获取数据。mysql

像这样添加池:

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

emysql_util:as_record(emysql:execute(...)) 

准备好的语句返回具有二进制文件(数据库中的字符串)的列表或记录。此二进制文件是latin1-encoded,而在数据库中它们是utf-8带有cyrillic符号的字符串。

有什么办法可以解决吗?

4

1 回答 1

1

这是存在的最常见问题之一,您可以尝试运行您的 erlang shell

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>>

我还建议您查看“Patrik Nyblom”关于“处理 unicoed”的演讲,他今年在斯德哥尔摩的 erlang 用户会议上发表了演讲。这里

如果你经历了这个,你会发现很多有用的东西来解决你的问题

祝你好运

于 2013-08-08T08:21:56.217 回答