【erlang】cowboy项目中文支持

erlang 对中文的支持可谓是一言难尽,默认的设置会让包含中文的内容统统变成一串数字,涵盖了输入、输出、日志等各个方面,这里就介绍下如何在代码中修改设置,让中文能够正确的显示出来。

输入包含中文

binary 是 erlang 专有的数据类型,有点像其他语言的 string,但是在 erlang 中,字符串是用 list 来表示的。cowboy还是比较贴心的,会将整个输入数据默认当 binary 处理,但是 httpc 就不会了。当你使用 httpc 命令请求后,你默认拿到的返回就会是一个 list 而不是一个 binary,需要修改,在 httpc 请求的第四个参数(一个列表)中加入 {body_format, binary},就可以让返回的 body 格式设置为 binary 。

输出包含中文

cowboy 使用 reply 应答的时候, 如果应答体包含中文,则可能会出现乱码。这个和 binary 有关。binary 本身是可以设置编码的,<<"中文">> 显示的不是中文而是乱码, <<"中文"/utf8>> 才会正确地显示中文。

日志包含中文

lager 的使用方法和 io:format 的语法是相当一致的。 想必各位读者都读过一些 erlang 语言的基础书本,都知道 ~ts 可以显示中文, 也就是说 lager:info( "~ts~n" , [Value] ) 即可正确地在日志中显示中文。

你可能感兴趣的:(【erlang】cowboy项目中文支持)