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

时间:2013-08-08 07:27:05

标签: mysql utf-8 erlang

我正在使用emysqlmysql数据库中获取数据。

像这样添加池:

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

emysql_util:as_record(emysql:execute(...)) 
预准备语句的

返回包含二进制文件的列表或记录(数据库中的字符串)。这些二进制文件为latin1-encoded,而在数据库中,它们是带有utf-8符号的cyrillic字符串。

有没有办法解决它?

1 个答案:

答案 0 :(得分: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用户大会上发表了这篇演讲。 Here

如果你经历过这个,你可以找到许多有用的东西来处理你的问题

祝你好运