我正在使用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
字符串。
有没有办法解决它?
答案 0 :(得分:1)
这是最常见的问题之一,您可以尝试使用
运行erlang shellerl +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
如果你经历过这个,你可以找到许多有用的东西来处理你的问题
祝你好运