将erlang二进制发送到浏览器

时间:2012-03-22 11:38:21

标签: html erlang

我想将erlang术语(基于erlang的后端)发送到Web浏览器。使用类似的东西在erlang端编码术语很容易:

term_to_binary(Term)

或:

binary_to_list(term_to_binary(Term))

问题当然是乱码垃圾出现在浏览器端。

问题:我是否可以在浏览器端使用某种编码,或者更可能的是,我可以在浏览器端接受一些Content-Type来解读这个?

感谢。

4 个答案:

答案 0 :(得分:2)

使用io_lib:format("~p",[Term])。它将生成erlang术语的字符串表示形式,可以在网页上显示。还可以考虑查看 question 及其 answer

答案 1 :(得分:2)

piqi在.piqi(其记录定义语言),json,xml和protobuf之间提供了广泛的映射机制。这是一个非常酷的工具,我们一直用它来映射所有这些格式。 通常当我构建需要向其他东西提供某种数据的东西(在Erlang中)时,我会从定义结构的piqi定义文件开始。 piqic编译器生成Erlang记录定义和转换代码,以便轻松进行转换。

强烈推荐,但对你正在做的事情可能有点过分。

答案 2 :(得分:1)

使用base64对其进行编码。通过ajax获取它,然后使用本机window.atob或任何众多可用库进行解码。

答案 3 :(得分:1)

如果是网页浏览器,我会选择Json字符串,它是unicode,浏览器支持它。

也许考虑Json并为字符串执行类似的操作:

1> HelloJerome = "Hello Jérôme".
"Hello Jérôme"
2> HelloJeromeBin = list_to_binary(HelloJerome).
<<"Hello Jérôme">>
3> HelloJeromeJson = << <<"{\"helloJerome\":\"">>/bits, HelloJeromeBin/bits, $\", $} >>.
<<"{\"helloJerome\":\"Hello Jérôme\"}">>

在浏览器控制台中:

jerome = JSON.parse('{\"hello\":\"Hello Jérôme\"}')

现在

jerome.hello == "Hello Jérôme"

有一些好的lib ejsonmochijson2是经典的但是ktuo或......