【问题标题】:How to make emysql return utf-8 encoded binaries如何使 emysql 返回 utf-8 编码的二进制文件
【发布时间】:2013-08-09 19:48:28
【问题描述】:

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

像这样添加池:

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

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

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

有什么办法可以解决吗?

【问题讨论】:

    标签: mysql utf-8 erlang


    【解决方案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

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

    祝你好运

    【讨论】:

    • 此功能出现在 R16 中?
    • 是的,我认为那里有一些小错误,但如果你不疯狂,它会很好用,很快它就会完成!
    猜你喜欢
    • 2016-04-06
    • 2011-08-13
    • 2017-05-19
    • 2021-08-08
    • 2018-06-23
    • 2011-01-07
    • 2018-08-01
    • 2012-05-10
    • 2015-09-12
    相关资源
    最近更新 更多