erlyweb连接mysql使用UTF-8

来源:互联网 发布:淘宝网创始人有多少人 编辑:程序博客网 时间:2024/05/16 19:41

erlyweb在连接MYSQL的时候默认使用的字符编码:latin1

所以在操作MYSQL的时候读取中文经常出错, 那只有设置编码为UTF8

这两天一直在为这事犯愁,知道是那么一回事,但是就是没找到最好的解决办法

在好多代码里面直接写改Encoding = utf8还是不起作用,使用起来相当不稳定,

在页面上中文经常变成一串串问号,呼.........一直在找文档,GOOGLE都没找到办法,

最后还是让我找到了,直接把解决的方法写出来吧~

在twoorl.erl代码里的93行开始
    erlydb:start(mysql,
                 [{hostname, ?DB_HOSTNAME},
                  {username, ?DB_USERNAME}, 
                  {password, ?DB_PASSWORD},
                  {database, ?DB_DATABASE}, 
                  {logfun, fun twoorl_util:log/4}]),
    lists:foreach(
      fun(_) ->
       mysql:connect(erlydb_mysql, ?DB_HOSTNAME, undefined,
       ?DB_USERNAME, ?DB_PASSWORD, ?DB_DATABASE, true)
      end, lists:seq(1, ?DB_POOL_SIZE)).

看到没有,没有把编码写进去,所以使用了默认那个编码,那我们就在这里加进去就可以了~
在twoorl_app.hrl里添加
-define(DB_ENCODE, utf8).

twoorl.erl代码里的93行开始改成如下
    erlydb:start(mysql,
                 [{hostname, ?DB_HOSTNAME},
                  {username, ?DB_USERNAME}, 
                  {password, ?DB_PASSWORD},
                  {database, ?DB_DATABASE}, 
                  {encoding, ?DB_ENCODE},
                  {logfun, fun twoorl_util:log/4}]),
    lists:foreach(
      fun(_) ->
       mysql:connect(erlydb_mysql, ?DB_HOSTNAME, undefined,
       ?DB_USERNAME, ?DB_PASSWORD, ?DB_DATABASE, ?DB_ENCODE, true)
      end, lists:seq(1, ?DB_POOL_SIZE)).

重新编译,运行,OK呲牙

好了,问题解决了,这两天就为这事纠结啊,一直在想要是这个问题都不能解决,那怎么进行下一步啊,我们的中文要一定要用得上,用得好的,要不学会这编程也没用~~呵呵,希望今晚能睡个好觉!

下一步,就可以正式用这东西来开发了。good night!

原创粉丝点击